这是我的桌子
我的查询是当我使用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
数据:
答案 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)
);