T/SQL 查询中 end = 1 的 Case 语句

And*_*tin 4 t-sql sql-server case

我希望有人可以向我解释以下查询,因为我不熟悉语法:

@[user1]   int,
@[user2]   varchar(10)

delete 
from [table name]
where [id] in (select [id]
            from [a diff table name]
            where [user1] = @[user1])
and (case
     when [user2] = 'some string' then 1
     when [table field] = @user2 then 1
     else 0
     end) = 1
and [other field] = 0
and [other field] = 0
and [other field]= 0
Run Code Online (Sandbox Code Playgroud)

首先,我显然已经更改了所有变量/表名称。如果有什么不清楚的,请见谅。我知道第一部分是一个删除语句,它使用 in 语句。没关系。我还得到了最后一部分,多个 AND 语句向 WHERE 子句添加了条件。

这是我正在努力解决的案例陈述。我有两个问题。

  1. else 0 有什么用?是否附加到它上面的 when 子句,以便 if [table field] 没有 = 传入的 user2 变量设置为 0?
  2. 什么是结局=1?我试过谷歌搜索,但之前没有找到任何这种形式的例子。

Ric*_*ard 5

ELSE 0 表示如果 WHEN 语句都不匹配,则 CASE 语句将返回 0。

如果将 End = 1 理解为

WHERE (CASE .... END) = 1
Run Code Online (Sandbox Code Playgroud)