gpt4 book ai didi

java - SQL/条件查询包含全部?

转载 作者:行者123 更新时间:2023-12-01 13:43:36 25 4
gpt4 key购买 nike

Table A:        Table A_B:         Table B:
id | a a_id | b_id id | b
------ ----------- ------
1 | w 1 | 1 1 | s
2 | x 1 | 2 2 | t
3 | y 2 | 4 3 | u
4 | z 4 | 4 4 | v

现在我想获得表 A 中 B.id = 1 AND B.id = 2 的所有条目。

目前我必须遵循以下代码:

SELECT *
FROM A a
JOIN A_B ab ON a.id = ab.a_id
JOIN B b ON ab.b_id = b.id

我被困住了。 WHERE b.id IN (...) 为我提供了表 A WHERE b.id = 1 OR b.id = 2 中的所有条目,当然还有 WHERE b.id = 1 AND b.id = 2 根本没有给出任何结果...

我发现的唯一可能的解决方案是使用INTERSECT:

SELECT *
FROM A a
JOIN A_B ab ON a.id = ab.a_id
JOIN B b ON ab.b_id = b.id
WHERE b.id = 1

INTERSECT

SELECT *
FROM A a
JOIN A_B ab ON a.id = ab.a_id
JOIN B b ON ab.b_id = b.id
WHERE b.id = 2

但我可以拥有无​​限数量的 b.ids。所以这个查询会变得非常慢......

难道没有类似 IN 的行为符合我想要的吗?它应该使用 Criteria Query 来实现:

Join<A, B> aB = root.join(A_.bs); // as this is a @ManyToMany relationship
...

但我也对纯 SQL 解决方案感到满意。

最佳答案

在 MySQL 上测试:

select TableA.id, count(*)
from tableA
join tableA_B on TableA.id=TableA_B.a_id
where b_id =1 or b_id=2
group by tableA.id
having count(*)=2

SQL Fiddle here .

关于java - SQL/条件查询包含全部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20505168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com