2011-05-09 31 views
0

我不是工作statement--情况下使用foloowing查询与案件在MySQL查询所需

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 

在其即时通讯在IDS得到1时查询返回行,但查询时没有返回值则不会返回0 。为什么??

我需要的是,当查询返回一行时,它应该返回1,如果没有结果显示,那么它应该返回0.我在哪里出错?

+0

我想你必须使用''''而不是'!=' – ariel 2011-05-09 05:50:47

+0

不,结果是相同的,即使<> – developer 2011-05-09 05:53:06

+0

检查这个http://stackoverflow.com/questions/334108/how-do -i-check-if-a-sql-server-string-is-null-or-empty – ariel 2011-05-09 05:54:45

回答

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