我正在使用带有case语句的对开查询 -
SELECT case WHEN t1.abc !='' THEN 1 ELSE 0 END as ids FROM
table1 AS t1 LEFT JOIN table2 as t2
ON t1.pid = t2.id
WHERE t2.idr IS NULL and t1.idr=23
当我在查询返回一行时获得1个id,但当查询返回任何内容时,则不返回0。为什么会这样?
我需要的是当查询返回一行时它应该返回1并且如果没有显示结果那么它应该返回0.我在哪里错了?
答案 0 :(得分:0)
如果您只关心如何获得1或0.请尝试下面的示例查询
SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END ids
FROM table1 t1 INNER JOIN table2 t2 ON t1.pid = t2.id
WHERE t2.idr IS NULL
AND t1.idr = 123;
在你的情况下,你现在排的时候没有得到0的原因。这是因为没有什么可比的。嗯这只是猜测,但这就是我的想法。
作为替代方案,如果结果不返回任何行,则让php处理。见here