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


Select row from table but exclude row that has ID already in another table

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

以下是表videos:

VIDEOID    |    videoname
   1             nameone
   2             nametwo
   3             namethree

此处为表favs:

VIDEOID    |    videoname
   2             nametwo

选择查询后,输出应该是:

VIDEOID    |    videoname
   1              nameone
   3              namethree

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

我尝试过一些单独的SQL查询,但我一直遇到语法错误,我从来没有做过选择数据但由于另一个表而发出一些数据的SQL查询。应该如何做到这一点?

你在这里的朋友是LEFT JOIN

SELECT videos.* 
FROM videos 
    LEFT JOIN favs ON videos.videoid=favs.videoid
WHERE favs.videoid IS NULL
SELECT ...
FROM videos
WHERE VIDEOID NOT IN (
   SELECT VIDEOID
   FROM favs
);
select *
from videos
where videoid not in (select videoid from favs)