2016-11-23 61 views
1

我想知道是否有可能獲得查詢的計數,再加上檢查查詢中的實體是否同時存在。是否有可能運行CASE WHEN與預查詢數據

所以我一直在尋找這樣做

SELECT 
    COUNT(a.*) 
    CASE WHEN ? IN (a.column) THEN 1 ELSE 0 END AS exist 
    FROM a 
    WHERE ... 

我知道我能做到的情況下的子查詢,但有可能與剛剛從初始查詢的數據做呢?


EDIT

+------------+ 
| id column | 
+------------+ 
| 1 5  | 
| 2 6  | 
| 3 7  | 
| 4 8  | 


SELECT 
    COUNT(a.*) 
    CASE WHEN 7 IN (a.column) THEN 1 ELSE 0 END AS exist 
    FROM a 
    WHERE id > 1 

將返回

+--------------------+ 
| COUNT(*)  exist | 
+--------------------+ 
| 3    1 | 

因爲有3項與一個id> 1,並且條目內,並且有一個與列中的條目= 7

+2

用樣本數據和樣本預期數據詳細說明您的問題。 – Viki888

+0

當然,我添加了一個編輯 –

回答

1

如果你想檢查是否在列中存在的值,你可以這樣做:

SELECT COUNT(*), 
     MAX(? = a.column) as value_exists 
FROM a 
WHERE ... 

在數值上下文中,MySQL把布爾爲整數,1表示是; 0爲假。因此,如果該值位於列中的任何一行,則返回true。如果要檢查相同的值是否在的所有行中,則可以使用MIN()

+0

真棒,這很好,非常感謝 –