[英]MySql case condition in where clause
這是我的桌子
我的查詢是當我使用cubbersId搜索時,如果我得到where cubbersId = 0
空數據where cubbersId = 0
否則where cubbersId = 1 (my_search_data)
類似於存儲過程。
我試過這個查詢
SELECT * FROM hometestimonial WHERE (CASE
WHEN cubbersId IS NOT NULL THEN cubbersId = 1
ELSE cubbersId = 0
END)
我搜索cubbersId = 1
所以我得到了3 datas
。 但是我嘗試搜索cubbersId = 2意味着cubbersId 2中no data
,因此在這種情況下,我需要顯示cubbersId = 0
數據。
這是我的結果:
where cubbersId = 1
數據:
您可以使用UNION ALL來完成。
僅當第一個查詢為空時,第二個查詢才返回行:
SELECT * FROM hometestimonial
WHERE cubbersId = 2
UNION ALL
SELECT * FROM hometestimonial
WHERE cubbersId = 0 AND
NOT EXISTS (
SELECT 1 FROM hometestimonial
WHERE cubbersId = 2
)
如果要得到結果,則應在選擇中移動箱子
SELECT *, CASE
WHEN cubbersId IS NOT NULL THEN 1
ELSE 0
END my_cubbersId
FROM hometestimonial
這是另一種選擇:
SELECT ht.*
FROM hometestimonial ht
WHERE ht.cubbersId = (SELECT MAX(h2.cubbersID)
FROM hometestimonial ht2
WHERE cubbersID IN (0, 2)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.