如何执行IF ELSE THEN T-SQL?

How to perform IF ELSE THEN T-SQL?

是否可以在 SQL 服务器中执行 IF ELSE THEN ?

例如我想执行 IF 我的查询结果是 NOT NULL (我的行存在)。它将继续THEN声明

ELSE如果我的查询结果是NULL(我的行不存在),它将继续到另一个THEN语句

对于 T-SQL 示例,这只是虚拟 SQL 脚本

IF (SELECT * FROM TABLE_A) IS NOTNULL THEN
(INSERT INTO TABLE_B)
ELSE
(DIDN'T PERFORM ANY QUERY)

谢谢

您可以在 INSERTWHERE 子句中使用 SELECT 语句,如下所示:

INSERT INTO TABLE_B(...)
    SELECT ...
        FROM ...
        WHERE EXISTS(SELECT * FROM TABLE_A);

然后用 IF @@ROWCOUNT > 0 THEN.

测试是否插入了任何东西

您可以检查 table returns 是否有任何行,然后执行 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 可能会在 IFINSERT 的执行之间发生变化,因此代码不是线程安全的。这段代码没有那个问题。