用php混淆group和having子句

ctehm74n  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(258)

我要拿到所有的身份证 table A 有效期从哪里开始 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

yb3bgrhw

yb3bgrhw1#

你是对的,你需要两个 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';

演示

相关问题