从表中选择行但排除已在另一个表中具有ID的行

时间:2012-03-16 17:32:33

标签: php mysql sql select

我有两个表,一个表有一个视频列表,一个有一个必须来自第一个表的视频列表,我需要从第一个表中选择第二个表中没有的行。

Heres table videos

VIDEOID    |    videoname
   1             nameone
   2             nametwo
   3             namethree

继承人favs

VIDEOID    |    videoname
   2             nametwo

在select查询之后,输出应为:

VIDEOID    |    videoname
   1              nameone
   3              namethree

可以看出,视频2已被省略,因为它已在表favs

我已经尝试了一些单独的SQL查询,但是我一直遇到语法错误,我从来没有做过选择数据的SQL查询但是由于另一个表而发出了一些,应该怎么做呢?

3 个答案:

答案 0 :(得分:5)

这里的朋友是LEFT JOIN

SELECT videos.* 
FROM videos 
    LEFT JOIN favs ON videos.videoid=favs.videoid
WHERE favs.videoid IS NULL

答案 1 :(得分:2)

SELECT ...
FROM videos
WHERE VIDEOID NOT IN (
   SELECT VIDEOID
   FROM favs
);

答案 2 :(得分:1)

select *
from videos
where videoid not in (select videoid from favs)