关于组混淆和与PHP的条款

时间:2018-06-29 13:56:27

标签: php mysql

我需要从table A获取所有ID,其中Table BINNER 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

1 个答案:

答案 0 :(得分:1)

您确实需要同时使用GROUP BYHAVING子句。由于您要求匹配的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';

DEMO