簡體   English   中英

如何在SQL select Query中使用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表達式返回值id應該等於:

SELECT *
FROM   table1 
WHERE  id = CASE WHEN @id = @uid THEN 5 ELSE 10 END;

編輯:

問題中更新的要求是在@id != @uid時返回所有行。 這可以通過比較idid來完成:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM