【问题标题】:Relational Tables - Select Only Rows in Table A That Don't Exist as ID in Table B关系表 - 仅选择表 A 中不作为 ID 存在于表 B 中的行
【发布时间】:2012-06-18 12:59:36
【问题描述】:

我有存储课程的表 A 和存储用户当前进度的表 B。

表 A 对每个课程 (courseID) 都有唯一的 ID 列,该 ID 列也存在于表 B 中并具有相同的名称(因此它们的关系)。

我想从表 A 中获取 ID 不存在于表 B 中的所有行。(例如,当前没有用户进入此课程)

这两个表不使用外键,只是一个同名的列。

【问题讨论】:

    标签: mysql select key


    【解决方案1】:

    试试

    SELECT A.* FROM tableA A
    LEFT JOIN tableB B ON USING (courseID)
    WHERE B.courseID IS NULL
    

    【讨论】:

    • 你也可以使用LEFT OUTER JOIN
    【解决方案2】:
    SELECT * FROM A WHERE A.courseID NOT IN (SELECT courseID FROM B);
    

    【讨论】:

      【解决方案3】:

      你需要LEFT JOIN

      SELECT * FROM `tableA`
        LEFT JOIN `tableB` ON `tableA`.`ID`=`tableB`.`ID`
        WHERE `tableB`.`ID` IS NULL;
      

      【讨论】:

        【解决方案4】:

        您使用的是什么数据库? 如果你使用 Oracle,我想你想要:

        select A.student_code from A where not exists
        ( select 'x' from B where B.student_code = A.student_code)
        

        至少这就是我认为你所要求的......

        【讨论】:

          猜你喜欢
          • 2013-03-31
          • 1970-01-01
          • 2019-05-16
          • 1970-01-01
          • 2017-08-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多