如何在 SQL select 查询中使用 case 语句
How to use case statement inside an SQL select Query
我需要根据特定条件获取所选查询的输出
表示if(id=uid)
然后我需要下面的查询
select * from table1 where id=5;
其他
我需要下面的
select * from table1 where id=10
我知道我可以为此使用 if 条件。但是我的查询很长,所以当我使用 if else 时,它看起来像
if(@id=@uid)
begin
select * from table1 where id=5;// query 1
end
else
select * from table1 where id=10;//query 2
但在这里我需要再次替换整个查询以进行一次检查。我希望我能做这样的事情:
declare @id int=4;
declare @uid=10;
select * from table1 where
case
when @id=@uid
then
id=5
else
id=10;
end
更新
我还需要一个条件
在这种情况下 id=5 和 uid=10
then if(id=uid)
然后
select * from table1 where id=5
和
if(id!=uid)
然后
select * from table1
像这样
您可以使用 case
表达式 return 值 id
应该等于:
SELECT *
FROM table1
WHERE id = CASE WHEN @id = @uid THEN 5 ELSE 10 END;
编辑:
问题中的更新要求是 return 所有行 @id != @uid
。这可以通过比较 id
和 id
:
来完成
SELECT *
FROM table1
WHERE id = CASE WHEN @id = @uid THEN 5 ELSE id END;
或者,根据此更新要求,简单的 or
表达式可能更易于使用:
SELECT *
FROM table1
WHERE @id = @uid OR id = 5;
SELECT
*
FROM
table1
WHERE
(
@id = @uid
AND
id =5
)
OR
(
not @id = @uid
AND
id=10
)
SELECT * FROM table1
WHERE (id=5 AND @id=@uid) OR (id=10 AND @id<>@uid)
我需要根据特定条件获取所选查询的输出
表示if(id=uid)
然后我需要下面的查询
select * from table1 where id=5;
其他 我需要下面的
select * from table1 where id=10
我知道我可以为此使用 if 条件。但是我的查询很长,所以当我使用 if else 时,它看起来像
if(@id=@uid)
begin
select * from table1 where id=5;// query 1
end
else
select * from table1 where id=10;//query 2
但在这里我需要再次替换整个查询以进行一次检查。我希望我能做这样的事情:
declare @id int=4;
declare @uid=10;
select * from table1 where
case
when @id=@uid
then
id=5
else
id=10;
end
更新
我还需要一个条件
在这种情况下 id=5 和 uid=10
then if(id=uid)
然后
select * from table1 where id=5
和
if(id!=uid)
然后
select * from table1
像这样
您可以使用 case
表达式 return 值 id
应该等于:
SELECT *
FROM table1
WHERE id = CASE WHEN @id = @uid THEN 5 ELSE 10 END;
编辑:
问题中的更新要求是 return 所有行 @id != @uid
。这可以通过比较 id
和 id
:
SELECT *
FROM table1
WHERE id = CASE WHEN @id = @uid THEN 5 ELSE id END;
或者,根据此更新要求,简单的 or
表达式可能更易于使用:
SELECT *
FROM table1
WHERE @id = @uid OR id = 5;
SELECT
*
FROM
table1
WHERE
(
@id = @uid
AND
id =5
)
OR
(
not @id = @uid
AND
id=10
)
SELECT * FROM table1
WHERE (id=5 AND @id=@uid) OR (id=10 AND @id<>@uid)