问题描述
是否可以在 sql Server 中执行 IF ELSE THEN ?
例如我想执行 IF
我的查询结果是 NOT NULL
(我的行存在)。它将继续THEN
声明
ELSE
如果我的查询结果是 NULL
(我的行不存在),它将继续执行另一个 THEN
语句
IF (SELECT * FROM TABLE_A) IS NOTNULL THEN
(INSERT INTO TABLE_B)
ELSE
(DIDN'T PERFORM ANY QUERY)
谢谢
解决方法
您可以在 SELECT
的 WHERE
子句中使用 INSERT
语句,如下所示:
INSERT INTO TABLE_B(...)
SELECT ...
FROM ...
WHERE EXISTS(SELECT * FROM TABLE_A);
然后测试是否使用 IF @@ROWCOUNT > 0 THEN
插入了任何内容。
您可以检查表是否返回任何行,然后执行 SELECT INTO 操作
IF EXISTS (SELECT 1 FROM TABLE_A)
BEGIN
SELECT * INTO TABLE_B FROM TABLE_A
END;
,
假设您只想将 A 中的特定行插入到 B 中,那么您可以使用:
INSERT INTO TABLE_B ( . . . ) -- list the columns here
SELECT . . .
FROM TABLE_A;
如果没有行,则不会插入任何内容。就是这么简单。
实际上,它比那更简单。使用 IF
会在您的代码中引入竞争条件。 TABLE_A
可能会在 IF
和 INSERT
的执行之间发生变化,因此代码不是线程安全的。这段代码没有这个问题。