我有三个表A和B和C,A的主键在B中,C的主键在B中:
表A:
id
---
1
2
3
4表B:
id A_id code c_id
-----------------------------
1 1 20 1
2 1 30 1
3 1 40 3
4 2 20 2
5 3 30 3
6 4 40 2
7 4 30 2
8 1 20 3
9 4 30 4表C:
id name
---------
1
2
3
4我有一个疑问,它有一个where子句,由列代码B的值和A的返回记录组成
我想要得到A的记录,这些记录有where子句的全部代码,而不是其中的一部分。
例如:
SELECT ID FROM A a INNER JOIN B b
ON a.id = b.A_id
where b.code in(20, 30, 40);我的期望值仅低于A的结果:
id
----
1因为顶部结果(“1”)仅具有代码(20,30,40)所有值,且另一个示例可以是:
SELECT ID FROM A a INNER JOIN B b
ON a.id = b.A_id
where b.code in(30, 40);我的期望是:
id
----
4发布于 2016-09-08 15:27:38
您可以像这样尝试:
Select A.Id
from A a INNER JOIN B b
ON a.id = b.A_id
where b.code in(20, 30, 40)
group by A.Id
having count(A.Id) = 3在这里,最后一行count(A.Id) = 3将确保在满足IN子句中指定的所有代码时返回Id。
编辑:
试试这个:
SELECT DISTINCT (A.Id)
FROM A a INNER JOIN B b
ON a.id = b.A_id
WHERE A.Id In (select A_id from user where code = 20)
And A.Id In (select A_id from user where code = 30)
And A.Id In (select A_id from user where code = 40) ;https://stackoverflow.com/questions/39384805
复制相似问题