GeR*_*ReV 2 sql t-sql sql-server
我有一个多对多的关系,我查询所有具有特定N的M,例如:
SELECT M.* FROM M INNER JOIN ManyToManyTable
ON M.Id = ManyToManyTable.M
WHERE ManyToManyTable.N = @Id
Run Code Online (Sandbox Code Playgroud)
要么:
SELECT M.* FROM M INNER JOIN ManyToManyTable
ON M.Id = ManyToManyTable.M
INNER JOIN N
ON N.Id = ManyToManyTable.N
WHERE N.Id = @Id
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何有效地反转查询,所以我得到所有没有特定N的M?
也就是说,NOT IN如上所述,但NOT IN如果可能的话,没有声明.
在SQL Server中,"NOT EXISTS"通常比OUTER JOIN方法更有效.
SELECT M.* FROM M
WHERE NOT EXISTS
(SELECT * FROM ManyToManyTable MMT
WHERE MMT.M = M.Id AND N=@Id )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |