首页 > 解决方案 > 如何用两个重复的变量过滤mysql

问题描述

我有这样的表:

id  name    start_date  
1   abc     2019-12-27
1   asd     2019-12-27
1   dwq     2019-12-27
1   sre     2019-12-27
1   ers     2019-12-27
1   fas     2019-12-23
1   abc     2019-12-23
1   dwq     2019-12-23
2   wda     2019-12-23
2   wqw     2019-12-23
2   rew     2019-12-19
2   sdf     2019-12-19
2   vfd     2019-12-19
2   asd     2019-12-19

我想以某种方式过滤它,我得到所有 ID 为 1 和最高日期的记录。当我这样做时:

SELECT id,MAX(start_date),name FROM table1 WHERE id=1 GROUP BY name;

我得到了这个结果:

1   abc     2019-12-27
1   asd     2019-12-27
1   dwq     2019-12-27
1   sre     2019-12-27
1   ers     2019-12-27
1   fas     2019-12-23

还有一个名为“fas”的附加行,我猜它之所以显示是因为该名称对于 2019-12-23 日期是唯一的。如何正确过滤?

编辑:我在两列中有重复项 - ID 和 start_date。对于单个 ID,可以有多个日期,当然一个日期可以有多个 ID。但我想得到的是具有特定 ID 和最高可能 start_date 的字段。

标签: mysql

解决方案


SELECT [DISTINCT] *
FROM table1 
WHERE id = 1
  AND start_date = ( SELECT MAX(start_date)
                     FROM table1
                     WHERE id = 1 )

推荐阅读