簡體   English   中英

MySQL案例條件在where子句中

[英]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數據:

在此處輸入圖片說明

where cubbersId = 2數據: 在此處輸入圖片說明

您可以使用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.

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