我需要从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
答案 0 :(得分:1)
您确实需要同时使用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';