【发布时间】:2020-07-09 14:43:59
【问题描述】:
我正在使用MySQL 和phpMyAdmin,
下面是我的数据表:
+--------+---------+-----------------+
| userID | context | time |
+--------+---------+-----------------+
| 111 | | 7/1/2021 |
| 111 | | 7/16/2019 |
| 111 | Reset | 7/15/2019 |
| 222 | | 7/9/2020 |
| 222 | Reset | 7/8/2020 |
| 333 | Reset | 5/11/2020 |
| 333 | | 5/10/2020 |
| 444 | | 9/8/2020 |
+--------+---------+-----------------+
我正在寻找一个SELECT 查询,它给我的MIN 时间大于或等于在context 列中记录重置 的日期。如果context 列中不存在 Reset 标记,我希望包含结果。
所以对于上表,我期待结果:
+--------+-----------------+
| userID | time |
+--------+-----------------+
| 111 | 7/15/2019 |
| 222 | 7/8/2020 |
| 333 | 5/11/2020 |
| 444 | 9/8/2020 |
+--------+-----------------+
我试过了:
SELECT * FROM foo as a
WHERE ((SELECT MIN(a.time) FROM foo) >= (SELECT Max(a.time) FROM foo where context = 'Reset')) group by userID
不会产生我预期的输出,但会返回:
+--------+-----------+
| userID | time |
+--------+-----------+
| 111 | 7/1/2021 | <--- wrong
| 222 | 7/8/2020 |
| 333 | 5/11/2020 |
+--------+-----------+
【问题讨论】:
-
您使用的是哪个 dbms?
-
我正在使用 MySQL 和 PhpMyAdmin,并通过 gping 使用此信息编辑我的问题
-
指定的预期结果是“等于重置的日期”行。 “更大或”不会添加任何行吗?
-
你想要每个用户标识一行吗?
-
将行 (444,'9/8/2020') 添加到样本数据中,并根据需要调整指定的结果。