【问题标题】:Select row from table but exclude row that has ID already in another table从表中选择行但排除已在另一个表中具有 ID 的行
【发布时间】:2012-03-16 17:32:32
【问题描述】:

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

这里的表videos

VIDEOID    |    videoname
   1             nameone
   2             nametwo
   3             namethree

这里有表favs:

VIDEOID    |    videoname
   2             nametwo

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

VIDEOID    |    videoname
   1              nameone
   3              namethree

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

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

【问题讨论】:

    标签: php mysql sql select


    【解决方案1】:

    你的朋友是LEFT JOIN

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

    【讨论】:

      【解决方案2】:
      SELECT ...
      FROM videos
      WHERE VIDEOID NOT IN (
         SELECT VIDEOID
         FROM favs
      );
      

      【讨论】:

        【解决方案3】:
        select *
        from videos
        where videoid not in (select videoid from favs)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-02-24
          • 1970-01-01
          • 2015-11-05
          • 2013-09-05
          • 2010-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多