首页 > 解决方案 > 如何找到 TableA 中的行元素与 TableB 不同的两个表的行

问题描述

我正在使用 SQL Server。我正在尝试查找学生不属于的组。表 A 是数据库中所有组的列表。表 B 显示了每个学生所在的组。当我尝试加入这两个表,然后使用 WHERE 查看差异时,它不起作用。我想我必须使用 EXCEPT 但我不知道如何使用。

目标

我想要发生的是有一个查询,例如 studentA,然后它必须返回 studentA 不属于的所有组。因此,对于下面的示例表,它应该返回 groupC,因为它是唯一不属于 studentA 的组。

表A:

团队名字 组描述 组标签
A组 没关系 没关系
B组 没关系 没关系
C组 没关系 没关系

表B:

用户名 团队名字
学生A A组
学生A B组
学生B B组
学生B C组

我尝试了什么:

  SELECT DISTINCT TableA.groupName, TableA.groupDescription
  FROM TableA
  INNER JOIN TableB 
      ON TableA.groupName=TableB.groupName
  WHERE TableB.username != 'studentA';
  

应该发生什么:

用户名 团队名字
学生A C组

标签: sqlsql-server

解决方案


 SELECT DISTINCT T.USERNAME,A.groupName
 FROM TABLEB AS T
 CROSS JOIN TABLEA AS A
    EXCEPT
 SELECT X.USERNAME,X.GROUPNAME
 FROM TABLEB AS X

推荐阅读