2011-05-09 94 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