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 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 )
推荐阅读
- java - 当我的列表不为空时,为什么我会得到 java.lang.NullPointerException?
- javascript - Phaser 3:一些动画突然停止播放
- hibernate - 休眠排序规则配置
- sql-server - 加入内部视图非常慢
- c# - WPF - 将矢量图像绑定到增强的工具提示
- python-3.x - 如何检索在 AWS Lambda 函数上定义的环境变量
- spring-boot - 第一次调用 ZuulException (SendErrorFilter)
- java - 如何实现构造函数/析构函数对称,对于 Java
- php - 选择 * 不显示来自 Mysql 的记录
- rabbitmq - RabbitMq 中的磁盘节点与 Ram 节点