我想仅引入最近的日期行以及表 B 中的其他字段,这些字段将包含表 A 中多列的所有值,即使表 B 中没有值也是如此。
以下查询有效,但仅返回表 A 和表 B 中都存在的值。如何包含 A 的全部内容和 B 的最新日期行?
非常感谢!
SELECT A.person_id,
A.second_field,
B.create_timestamp,
B.second_field
FROM (
SELECT B.person_id, max(B.create_timestamp) as create_timestamp
FROM Table_B B
GROUP BY B.person_id
) BMaxDate
LEFT JOIN Table_B B
ON BMaxDate.person_id = B.person_id AND
BMaxDate.create_timestamp = B.create_timestamp
LEFT JOIN Table_A A ON BMaxDate.person_id = A.person_id
最佳答案
您必须使用Table_A
作为LEFT JOIN
操作链中的第一个表:
SELECT A.person_id,
A.second_field,
B.create_timestamp,
B.second_field
FROM Table_A AS A
LEFT JOIN (
SELECT B.person_id, max(B.create_timestamp) as create_timestamp
FROM Table_B B
GROUP BY B.person_id
) AS BMaxDate ON BMaxDate.person_id = A.person_id
LEFT JOIN Table_B AS B
ON BMaxDate.person_id = B.person_id AND
BMaxDate.create_timestamp = B.create_timestamp
关于mysql - 如果还没有日期行,如何将最近的行从一个表连接到另一个表并包含所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36088157/