如何使用两个重复变量过滤mysql

如何使用两个重复变量过滤mysql,mysql,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

我有这样的桌子:

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和开始日期。对于单个ID,可以有多个日期,当然一个日期可以有多个ID。但我想得到的是具有特定ID和最高可能开始日期的字段。

使用
不存在

SELECT [DISTINCT] *
FROM table1 
WHERE id = 1
  AND start_date = ( SELECT MAX(start_date)
                     FROM table1
                     WHERE id = 1 )
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
)
请参阅。
结果:


使用
不存在

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=1
的最高日期的
name
?如果是这样,您必须在子查询中获取此max_日期并将其用于筛选。有时,在接受回答之前最好等待一段时间。您是否只需要那些
名称
中的最高日期等于
id=1的最高日期?如果是这样的话,您必须在子查询中获取此max_日期,并将其用于筛选。有时最好在接受答案之前等待一段时间。
DISTINCT*
是一种矛盾-好吧,这是一种矛盾修饰法或重言式,取决于您的观点。@草莓,如您所见
[DISTINCT]
已经包装好了。我的意思是,如果源数据包含重复项(未显示DDL),但OP不需要,那么他必须使用DISTINCT,当然,在这种情况下,他应该指定字段名(语法不允许带DISTINCT的星号)。如果你不知道这一点,那就认为它是一个矛盾修辞法。如果源数据包含重复数据,那么OP有更大的问题需要首先解决。我在两列中重复了-id和StistyDead。对于单个ID,可以有多个日期,当然一个日期可以有多个ID。但我想得到的是具有特定ID和最高可能开始日期的字段。@janoe编辑您的问题。将这些事实(以及表的DDL)添加到其中。
DISTINCT*
是一个矛盾-好吧,一个矛盾修饰法或重言式,取决于你的观点。@草莓,如你所见
[DISTINCT]
被包装起来了。我的意思是,如果源数据包含重复项(未显示DDL),但OP不需要,那么他必须使用DISTINCT,当然,在这种情况下,他应该指定字段名(语法不允许带DISTINCT的星号)。如果你不知道这一点,那就认为它是一个矛盾修辞法。如果源数据包含重复数据,那么OP有更大的问题需要首先解决。我在两列中重复了-id和StistyDead。对于单个ID,可以有多个日期,当然一个日期可以有多个ID。但我想得到的是具有特定ID和最高可能开始日期的字段。@janoe编辑您的问题。将这些事实(以及表的DDL)添加到其中。