2013-05-07 64 views
0

我想運行一個查詢來顯示給定的poll_id是否有一個或多個user_id。MySQL選擇不同並確定是否只存在一個user_id

示例1:poll_id 1106對於所有行都只有user_id 1。

示例2:poll_id 1106對於所有行都有多個user_id 1。

two examples images

使用下面的例子中,這個PHP代碼工作:

$sql = " 
SELECT 1 
FROM xf_poll_vote 
WHERE poll_id='1106' 
having count(distinct user_id) > 1"; 

// execute SQL query and get result 
$sql_result = mysql_query($sql,$connection); 

// format results by row 
while ($row = mysql_fetch_array($sql_result)) { 

    $user_id[] = $row["user_id"]; 

} 

$count = count($user_id); 

echo $count; 

回答

1
select 1 
from yourTable 
where poll_id = @yourPoll_id 
having count(distinct user_id) > 1 

如果你回報什麼,那poll_id有一個以上的用戶。如果沒有,只有一個或零用戶

+1

謝謝你,貢薩洛,這是完美的作品。我會用我使用的php代碼更新我的原始問題。當我回顯user_id,並且我得到一個0意味着所有user_id都是相同的。如果我得到1意味着有多個user_id。 – 2013-05-07 16:03:43

3

只是COUNT/DISTINCT我想。

SELECT poll_id, CASE WHEN COUNT(DISTINCT user_id) > 1 THEN 'Many' ELSE 'One' END AS ManyOrOne 
FROM SomeTable 
GROUP BY poll_id 
+0

你好,Kickstart。我嘗試了你的例子,但我的結果是我有同一個poll_id的一個或多個user_id的天氣。 – 2013-05-07 15:57:27

+0

我再次檢查它,它應該工作。讓我拿起你的測試表,然後再試一次。 – Kickstart 2013-05-07 16:04:48

+0

試用了您的示例數據,它似乎按照我的意圖工作。提供1105個投票ID以及「one」和1106個投票ID以及「many」。如果您只想檢查特定的投票ID,很容易添加一個where子句。 – Kickstart 2013-05-07 16:10:59