mysql - 如果还没有日期行,如何将最近的行从一个表连接到另一个表并包含所有行?

标签 mysql sql-server join

我想仅引入最近的日期行以及表 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/

相关文章:

mysql - 如何在同一字段上加入两个 ON 条件

mysql。根据 1 个表中的列从 3 个不同的表中选择数据

mysql - 在 phpMyadmin 中使用 SQL 查询更新一系列发布日期

mysql - 使用 mysql 获取今天之后的下一个日期/月份

mysql - 将 m2m 更改为 char 时 Django South 迁移失败

sql-server - SQL 重新排序记录

sql - 从远程(链接)SQL 服务器选择记录时,瓶颈在哪里/有哪些陷阱?

sql - 我的 SQL Server 存储过程中的 BIT 值类型存在语法问题

python - 将两列与 pandas 中的 if 条件合并

mysql - 如何在流行的 SQL 平台上通过 SQL 查询请求数据库模式?