MySQL案例条件在where子句中

时间:2019-07-16 07:33:06

标签: jquery mysql sql select case

这是我的桌子

enter image description here

我的查询是当我使用cubbersId搜索时,如果我得到的数据为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数据:

enter image description here

where cubbersId = 2数据: enter image description here

3 个答案:

答案 0 :(得分: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
)

答案 1 :(得分:1)

如果要得到结果,则应在选择

中移动箱子
    SELECT *,  CASE 
        WHEN cubbersId IS NOT NULL THEN  1
        ELSE  0
    END my_cubbersId
    FROM hometestimonial 

答案 2 :(得分:0)

这是另一种选择:

SELECT ht.*
FROM hometestimonial ht
WHERE ht.cubbersId = (SELECT MAX(h2.cubbersID)
                      FROM hometestimonial ht2
                      WHERE cubbersID IN (0, 2)
                     );