2013-05-01 173 views
5

我試圖讓一個select語句指示如果計數> 0或不是真/假一列中的值。MySQL的SELECT COUNT> 0的布爾值

我閱讀這些文檔:http://dev.mysql.com/doc/refman/5.1/en/expressions.html

我不完全理解,但他們似乎表明,我可以在我的表達式中使用「>>」。

所以,我想這一點:

SELECT COUNT(*)>>0 AS my_bool FROM table GROUP BY id; 

它運行和犯規產生錯誤或警告,但是my_bool列只包含COUNT(*)的結果。 正在嘗試做什麼,如果是的話,怎麼樣?

PS是的我知道我可以在處理結果的代碼中測試x> y,我想知道它是否可以在MySQL中完成(請隨時解釋爲什麼它不可取,由一切手段)

回答

16

在你的榜樣,你不使用greater than運營商,而是一個bit shift (>>)。如果使用

SELECT COUNT(*) > 0 AS my_bool FROM table GROUP BY id; 

my_bool將包含0或1作爲布爾值。

+0

衛生署!現在是面對面。我記得那嘗試,它不工作,這就是我爲什麼不先試試吧:當SO讓我:)謝謝 – jammypeach 2013-05-01 09:42:33

1

嘗試以下操作:

SELECT (COUNT(*) <> 0) AS my_bool 
FROM table 
GROUP BY id; 
4

使用if條件檢查,並返回真/假。

例子:

SELECT if(COUNT(*)>0,'true','false') AS my_bool FROM table GROUP BY id; 

如果將檢查,如果計數值大於0,則返回true,否則返回false。

+0

我喜歡這個回答最好 – newUserNameHere 2015-02-22 17:18:23

+0

@newUserNameHere感謝,像S將接受。 – 2015-04-03 15:31:09

1

雖然我認爲基因的回答是最好的一個,你也可以使用一個子查詢做到這一點:

SELECT (
    SELECT COUNT(*) AS my_bool FROM table GROUP BY id 
) != 0; 

如果COUNT(*)爲零,查詢返回0,否則爲1

1

你可以做到這一點 -

SET @countValue = (SELECT COUNT(*) FROM table GROUP BY id); 
if @countValue > 0 
    return 1; 
else 
    return 0;