2014-10-08 62 views
1

我想從DB如何編寫SQL查詢語句的if-else

if id=0 select * from tbl 
else select * from tbl where id= :id 

如何在MySQL查詢使用它選擇?

+0

從哪裏來,你正在談論程序/功能。 – 2014-10-08 08:33:26

回答

2

試試這個:

select * from tbl where :id = 0 
union all 
select * from tbl where :id <> 0 and id = :id 

這只是一個查詢,並且它將只執行一個分支,作爲指定的:id值。當:id=0,第一個查詢的條件成爲true,結果與select * from tbl相同。當:id<>0,第一個查詢的結果將是空的,但是,第二個查詢將返回select * from tbl where id=:id的結果。

+0

這可以在沒有UNION ALL的情況下完成。無論如何。 – 2014-10-08 08:41:36

+0

@ X.L.Ant是的,你是對的。 Rimas和Mureinik的答案看起來更加緊湊。 – ntalbs 2014-10-08 08:42:26

1
if (id=0) then 
select * from tbl 
else 
select * from tbl where id= :id 
end if; 
+0

it劑量工作在findii()yii – Sepideh 2014-10-08 08:51:12

2

兩個您的查詢之間的區別僅僅是where條款 - 你可以用or邏輯運算表達這樣的:

SELECT * 
FROM tbl 
WHERE (:id = id) OR (:id = 0) 

當然,這可以進一步與in運營商清理:

SELECT * 
FROM tbl 
WHERE :id IN (id, 0) 
+0

似乎在id = 0的情況下,OP想要獲取整個表。 – 2014-10-08 08:35:13

+0

我的tabel中的id是1 2 3,我想當用戶dosent設置id顯示id爲1和3的所有行時 – Sepideh 2014-10-08 08:36:29

+0

然後你不是在談論id = 0,而是關於':id = 0' - 編輯我的解決方案。 – Mureinik 2014-10-08 08:38:51

1
SELECT * 
    FROM tbl 
    WHERE id = :id OR 0 = :id 
0

我認爲你應該創建函數,將你的id作爲參數,然後你可以使用mySql的IF語句。 在這裏,您可以獲得有關IF語句的簡單快速教程以及功能IF statement的示例。

要知道,MySQL已經集結在IF()函數也。