DDL 和 DML 示例:
CREATE TABLE a (
`ID` VARCHAR(8), `yearly_return` DECIMAL(16,2)
);
INSERT INTO a
VALUES
('0001', 0.4), ('0002', 0);
CREATE TABLE b (
`ID` VARCHAR(8), `drawdown` DECIMAL(16,2)
);
INSERT INTO b
VALUES
('0001', 0.2), ('0002', 0);
CREATE TABLE c (
`ID` VARCHAR(8), `author` VARCHAR(255)
);
INSERT INTO c
VALUES
('0001', 'join'), ('0002', '');
CREATE TABLE d (
`ID` VARCHAR(8), `date` VARCHAR(20), `yield_the_day` DECIMAL(16,2)
);
INSERT INTO d
VALUES
('0001','20220910', 0.02), ('0001','20220911', 0.06);
mysql: 8.0.26
背景:id(0001)是表a、b、c中的主鍵,id和日期(0001、20220912)是表d中的組合主鍵
問題:如何查詢abcd,結果集是e。而d中的最新記錄需要最新的日期
嘗試步驟:
SELECT
a.yearly_return,
b.drawdown,
c.author,
FROM
a
INNER JOIN b test ON a.id = b.id
INNER JOIN c ON a.id = c.id
uj5u.com熱心網友回復:
你想要一個橫向連接,即連接一個參考其他表的子查詢:
SELECT
a.yearly_return,
b.drawdown,
c.author,
d.yield_the_day
FROM a
INNER JOIN b ON b.id = a.id
INNER JOIN c ON c.id = a.id
CROSS JOIN LATERAL
(
SELECT *
FROM d
WHERE d.id = a.id
ORDER BY date DESC
LIMIT 1
) d
ORDER BY a.id;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/507707.html
下一篇:列不包含的重復行
