编写SQL查询以获取给定列表中的每个项目
我被要求编写一个查询,该查询应只返回与其他多对多表中的每个条件匹配的项目。
这意味着从提供的列表中有一个子项目是不够的,而是必须为提供的列表中的每个项目都存在一个子项。
于是,我去了这样的事情:编写SQL查询以获取给定列表中的每个项目
select distinct ti.id from table1 ti
where `sizeOfField2IdList` =
(
select count(*)
from table2 t2
where t1.fieldX1 = t2.fieldY1 and t2.field2 IN (`field2IdList`)
);
有谁可以建议我需要一个更好的选择?
我希望这可以帮助任何人需要类似的东西。
回答:
对于提供的列表中的每个项目都必须存在。
是有一个替代的解决方案,通过基团通过该ID,并使用HAVING
场2相等的计数sizeOfField2IdList
:
SELECT ti.id frp, table1 as ti
inner join table2 as t2 on t1.fieldX1 = t2.fieldY1
Where t2.field2 IN ($field2IdList)
group by ti.id
HAVING COUNT(DISTINCT t2.field2) = $sizeOfField2IdList
(假设两个$field2IdList
和$sizeOfField2IdList
将作为预定的设置变量到查询。)
以上是 编写SQL查询以获取给定列表中的每个项目 的全部内容, 来源链接: utcz.com/qa/265349.html