如何使用两个重复的变量过滤 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的字段。

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

使用NOT EXISTS

SELECT t.* FROM table1 t 
WHERE t.id = 1 
AND NOT EXISTS (
SELECT 1 FROM table1
WHERE id = t.id AND start_date > t.start_date
)

请参阅演示。
结果:

| id  | name | start_date          |
| --- | ---- | ------------------- |
| 1   | abc  | 2019-12-27 00:00:00 |
| 1   | asd  | 2019-12-27 00:00:00 |
| 1   | dwq  | 2019-12-27 00:00:00 |
| 1   | sre  | 2019-12-27 00:00:00 |
| 1   | ers  | 2019-12-27 00:00:00 |