如何执行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)
谢谢
您可以在 INSERT
的 WHERE
子句中使用 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
可能会在 IF
和 INSERT
的执行之间发生变化,因此代码不是线程安全的。这段代码没有那个问题。
是否可以在 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)
谢谢
您可以在 INSERT
的 WHERE
子句中使用 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
可能会在 IF
和 INSERT
的执行之间发生变化,因此代码不是线程安全的。这段代码没有那个问题。