问题描述
IF NOT EXISTS (SELECT ...)
BEGIN
INSERT ...
END
如果您希望查询可能经常返回行(尤其是很多行),也可以这样做,这可能会提供一个更好的短路机会:
IF EXISTS (SELECT ...)
BEGIN
PRINT 'Do nothing.';
END
ELSE
BEGIN
INSERT ...
END
…因为IF EXISTS
它将在到达匹配的第一行后立即返回。
我不建议@@ROWCOUNT
仅使用它,因为您每次都必须实现(忽略)整个结果集。
解决方法
我正在写一个基本SELECT
查询,类似:
SELECT id,pname,pnumber
FROM tableName
WHERE pnumber IS NOT NULL
我想然后INSERT
通过使用SELECT
类似的结果执行:
IF {**the above SELECT query returned 0 rows**}
BEGIN
INSERT INTO tableName (pname,pnumber) VALUES ('bob','38499483')
END
我的问题是,如何检查**the above SELECT query returned 0 rows**
?