sql - 如何找到 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组 |
解决方案
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
推荐阅读
- javascript - 如何使用远程源映射调试混淆的前端代码
- excel - 有没有办法将结果分成不同的列
- python - Conditional aggregate for a PySpark dataframe
- vhdl - 组件与实体默认通用值
- html - Semantically, can I put
inside - jasmine - TypeError:无法在角度范围内设置未定义的属性
- jmeter - How to write regular expression from the Request tab> Cookie Data section to pull CSRF-TOKEN value
- scala - 从 Spark 中的多个 S3 存储桶中读取
- office-ui-fabric - Loading Office UI Fabric fonts and icons with Content Security Policy
- python - How do I select only some values in the column using pandas pivot table