sql - MSSQL 查询帮助?应该很容易,但我必须要更多的咖啡?

标签 sql sql-server performance sql-server-2008

我知道这应该很容易,但我只见树木不见森林。

TABLE 1
GNUM
Team1
Team2

TABLE 2
GNUM
ID
TeamID

对于表1中的每条记录,表2中可以有多个相关记录

这是我似乎无法弄清楚的事情

我需要一个查询来告诉我何时 TABLE2 中没有特定团队的特定游戏的记录

For Example

TABLE1  
GNUM        Team1       Team2
1           A           B
2           A           C
3           B           A   
4           C           B   
5           B           A

TABLE 2
GNUM    TeamID
1       A
1       B
3       B
4       B
4       B
4       B

鉴于上述情况,我需要一个查询来显示表 2 中缺少记录的所有游戏。例如:

GNUM    Missing Team
2       A
2       C
3       A
4       C
5       B
5       A

最佳答案

您可以为此使用UNIONLEFT JOIN:

SELECT a.*
FROM (SELECT GNUM, Team1
      FROM TABLE1  
      UNION
      SELECT GNUM, Team2
      FROM TABLE1  
      )a
LEFT JOIN TABLE2 b 
  ON a.GNUM = b.GNUM
  AND a.Team1 = b.TeamID
WHERE b.TeamID IS NULL

关于sql - MSSQL 查询帮助?应该很容易,但我必须要更多的咖啡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18342668/

相关文章:

PHP/MySQL 查询 : Show results based on 2 conflicting conditions

mysql - 将 autoincrement id 字段加一

sql-server - 如何根据其他列的不同值进行分组

python - 使用参数 : pandas (or pyodbc) not functioning properly 从 SQL Server 读取

c++ - 如何访问指向 QWidget 像素的指针

performance - “for”循环与 MATLAB 中的矢量化

mysql - 选择某一列的前 n 个值不同的行

mysql - 从 MySQL 选择行并使用 MAX 和 MIN 进行分组

sql-server - 使用 GMSA 帐户访问 Azure 文件

.Net 4.5 Async 与 [...]Async 与 Begin[...] 的 C# Socket 性能