【问题标题】:Get the newest data but only one获取最新数据但只有一个
【发布时间】:2013-06-27 08:11:57
【问题描述】:

这是表格(后续):

我的问题是,我想为每个插入的cust_name 选择fol_date 的最新数据。我用红色箭头标记的示例结果。有人帮忙吗?

【问题讨论】:

标签: mysql


【解决方案1】:

这是一种可能的解决方案。

SELECT  a.*
FROM    tableName a
WHERE   a.fol_date =
        (
            SELECT  MAX(fol_date)
            FROM    tableName b
            WHERE   b.cust_name = b.cust_name
        )

或使用JOIN

子查询的想法是为每个cust_name 获取最新的fol_date。这已经为您提供了您想要的结果,但如果您想获得行中的整个列,您需要将其加入到表本身,前提是它在两个条件下匹配,cust_namefol_date

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  cust_name, MAX(fol_date) fol_date
            FROM    tableName 
            GROUP   BY cust_name 
        ) b ON  a.cust_name = b.cust_name AND
                a.fol_date = b.fol_date

【讨论】:

  • 这是有效的,但实际上,SELECT cust_name, MAX(fol_date) fol_date FROM tableName GROUP BY cust_name 这就是你的答案的路径,它实际上也有效,就像@Edper 所说的一样。所以我不需要使用inner join,谢谢
  • 如果您只想要 cust_name 和 max fol_date 那么您接受的答案很好,但大多数时候您需要其他列(例如示例数据中的 fol_id),在这种情况下您需要使用此处发布的解决方案。
  • 现在的事实是,@JW 的回答更好。
【解决方案2】:

试试

SELECT cust_name, MAX(fol_date) as LatestDate
FROM FollowUp 
GROUP BY cust_name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 2021-02-12
    相关资源
    最近更新 更多