使用基于Count的IF ELSE语句来执行不同的Insert语句

use*_*821 53 sql t-sql sql-server sql-server-2008 sql-server-2008-r2

当我在我的数据库中搜索时,如果我发现某个特定项目不存在,我会运行一个INSERT语句,如果找到一个或多个这个项目,我会运行一个不同的INSERT语句.

我不完全确定如何使用IF ELSE表达式.

到目前为止,我所做的是一份声明,它将计算目标数据出现的次数; 如果它大于0,它将打印为TRUE,否则,它将打印为FALSE.我找不到任何示例来帮助我理解如何使用它来运行两个不同的INSERT语句.

这是我到目前为止:

SELECT CASE WHEN COUNT(*)>0 THEN 'TRUE' ELSE 'FALSE' END
(
  SELECT [Some Column], COUNT(*) TotalCount
  FROM INCIDENTS
  WHERE [Some Column] = 'Target Data'
  GROUP BY [Some Column]
)
Run Code Online (Sandbox Code Playgroud)

sge*_*des 99

根据您的需求,有以下几种方式:

IF EXISTS (SELECT * FROM TABLE WHERE COLUMN = 'SOME VALUE')
    --INSERT SOMETHING
ELSE
    --INSERT SOMETHING ELSE
Run Code Online (Sandbox Code Playgroud)

或者更长一点

DECLARE @retVal int

SELECT @retVal = COUNT(*) 
FROM TABLE
WHERE COLUMN = 'Some Value'

IF (@retVal > 0)
BEGIN
    --INSERT SOMETHING
END
ELSE
BEGIN
    --INSERT SOMETHING ELSE
END 
Run Code Online (Sandbox Code Playgroud)


Zia*_*rek 9

只需使用以下内容:

IF((SELECT count(*) FROM table)=0)
BEGIN

....

END
Run Code Online (Sandbox Code Playgroud)


Ath*_*afa 8

只要你需要根据Count大于0来找到它,最好使用这样的EXISTS:

IF EXISTS (SELECT 1 FROM INCIDENTS  WHERE [Some Column] = 'Target Data')
BEGIN
    -- TRUE Procedure
END
ELSE BEGIN
    -- FALSE Procedure
END
Run Code Online (Sandbox Code Playgroud)


pap*_*zzo 5

如果存在

IF exists (select * from table_1 where col1 = 'value')
BEGIN
    -- one or more
    insert into table_1 (col1) values ('valueB')
END
ELSE
    -- zero
    insert into table_1 (col1) values ('value') 
Run Code Online (Sandbox Code Playgroud)