【问题标题】:MySQL SQL order join for multiple recordsMySQL SQL order join 多条记录
【发布时间】:2012-10-08 13:45:08
【问题描述】:

所以我有两张桌子:

  1. 客户
  2. 文件

如何加入以显示最新记录,即通过 created_on DESC

例如

SELECT customers.name, files.last_file_submission

如果我有:

customer A
 - File 1, created_on 10-10-2012
 - File 2, created_on 11-10-2012

我想为每个客户返回一行:

customer A, 11-10-2012

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    每个文件:

    SELECT c.name, f.submit_date
    FROM files f, customers c
    WHERE f.submitter = c.id
    ORDER BY f.submit_date DESC
    

    每位用户:

    SELECT DISTINCT c.name, MAX(f.submit_date)
    FROM files f, customers c
    WHERE f.submitter = c.id
    ORDER BY MAX(f.submit_date) DESC
    GROUP BY c.id
    

    【讨论】:

    • 我应该添加它应该返回所有客户的列表,LIMIT 1 只会返回第一个客户?
    • 你需要一个GROUP BY customers.PK
    【解决方案2】:

    无论客户是否有任何文件记录,它都会带来所有客户及其最近的存档日期。

    SELECT DISTINCT customer.id, customer.name, MAX(file.submit_date)
    FROM customer LEFT JOIN file ON customer.id = file.submitter
    GROUP BY customer.id, customer.name
    

    您可以将LEFT 更改为INNER 以限制仅在文件表上有引用的客户之间的连接。

    【讨论】:

    • 谢谢你的回答,你的权利也希望我可以选择两个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 2023-02-10
    • 2011-04-19
    相关资源
    最近更新 更多