2013-05-07 62 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