SQL:查找表中的所有行,其中另一个表中引用原始行的所有行都具有某个属性

时间:2014-07-10 19:06:32

标签: mysql sql join

我有两张桌子,挑战和参赛者。参赛者有一个id,一个challenge_id和一个user_id列。

给定一组用户ID,我想找到一组挑战,如果所有参赛者的challenge_id等于挑战的id在给定的一组用户ID中都有user_id,那么挑战就在集合中。

我觉得我需要某种IN ALL语句,但当然,这不存在。

有关如何查找行列表的任何想法?

1 个答案:

答案 0 :(得分:0)

这与“查找具有该challenge_id的所有参赛者的挑战集合在给定的用户ID集合中是不一样的。”,

要查找所有行满足某些条件的集合,您只需找到成员 NOT 满足条件的集合,因此这与以下内容相同:

“在给定的一组用户ID中找到 NO 参赛者,其中 NO 参赛者 NOT 。”,

Select distinct challenge_Id
From Contestents c
Where Not exists (Select * From Contestents 
                  Where challenge_Id = c.challenge
                     And user_id not In ([List of UserIds]))