我需要从table A获得所有ID,其中Table B (INNER JOIN ID = A_ID)的所有过期日期都是< today (2018-06-29),但我不确定,对查询来说也有点混乱。
根据我的示例(2018-06-29),我只需要检索Name-4,因为所有的过期日期都来自Table B are < 2018-06-29。
Table A
ID | Name |
-------------
1 | Name-1
2 | Name-2
3 | Name-3
4 | Name-4
5 | Name-5
6 | Name-6
7 | Name-7
Table B
ID | A_ID | Expiry
-----------------------
1 | 1 | 2018-06-29
2 | 2 | 2018-07-29
3 | 2 | 2018-06-29
4 | 3 | 2018-07-29
5 | 3 | 2018-04-29
6 | 4 | 2018-05-29
7 | 4 | 2018-04-29
8 | 6 | 2018-09-29
9 | 6 | 2018-10-29发布于 2018-06-29 14:15:14
正确的是,您同时需要GROUP BY和HAVING子句。由于您要求匹配的A_ID的所有到期日期都小于给定日期,所以必须检查该分组的MAX()过期日期。
SELECT ta.* FROM tableA ta JOIN tableB tb ON ta.ID = tb.A_ID
GROUP BY ta.id
HAVING MAX(Expiry) < '2018-06-20';演示
https://stackoverflow.com/questions/51103428
复制相似问题