编写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

回到顶部