Sql server 具有空子集的Tsql IN子句
是否可以设置也与空子集匹配的IN语句 这是我的疑问:Sql server 具有空子集的Tsql IN子句,sql-server,tsql,dbnull,in-subquery,Sql Server,Tsql,Dbnull,In Subquery,是否可以设置也与空子集匹配的IN语句 这是我的疑问: .. WHERE id IN (SELECT * FROM #subset) 如果子集为空,我也希望该记录。 解决办法是: .. WHERE NOT EXISTS(SELECT * FROM #subset) OR id IN (SELECT * FROM #subset) 然而,SELECT*FROM子集并不是一个简单的查询,我想知道是否有一种聪明的方法可以将IN也用于空子集。使用双负表达式 而不是 存在匹配行的位置 。。这是 其中不存
.. WHERE id IN (SELECT * FROM #subset)
如果子集为空,我也希望该记录。
解决办法是:
.. WHERE NOT EXISTS(SELECT * FROM #subset) OR id IN (SELECT * FROM #subset)
然而,SELECT*FROM子集并不是一个简单的查询,我想知道是否有一种聪明的方法可以将IN也用于空子集。使用双负表达式 而不是 存在匹配行的位置 。。这是 其中不存在不匹配的行
当然,correlated EXISTS WHERE子句可以扩展到多个列,而IN子句只需要一列如何准备子集?如图所示的临时表?或者是查询的简写?
DECLARE @m TABLE (KeyCol int, Payload varchar(2));
DECLARE @s TABLE (KeyCol int);
INSERT @m VALUES (1, 'aa'), (2, 'bb'), (3, 'cc');
-- No values in #subset
SELECT
*
FROM
@m M
WHERE
NOT EXISTS (SELECT * FROM @s S WHERE M.KeyCol <> S.KeyCol);
INSERT @s VALUES (2);
-- A matching value in #subset
SELECT
*
FROM
@m M
WHERE
NOT EXISTS (SELECT * FROM @s S WHERE M.KeyCol <> S.KeyCol);