投票系统,关系数据库,sql 查询
voting system, relational db, sql query
我想用两个table设计投票系统。
第一个 table 包含候选人的索引和姓名。
另一个包含索引,选民和选民支持的候选人索引。
一个选民可以支持多个候选人。
我想要一个 sql 查询来显示候选人的姓名及其支持者的数量。
所以结果看起来像
约翰 12、鲍勃 8、大卫 3...
SELECT `name`, COUNT(table2.voter) AS `count`
FROM `table1`
LEFT JOIN `table2`
ON table1.idx = table2.support
ORDER BY COUNT(table2.voter) DESC;
上面的查询只给出了一行选民总数。
任何人都可以给我任何提示吗?
SELECT `name`, COUNT(table2.voter) AS `count`
FROM `table1`
LEFT JOIN `table2` ON table1.idx = table2.support
GROUP BY `name`
ORDER BY COUNT(table2.voter) DESC;
您错过了一个 group by
,因此只得到第一个结果。
您需要GROUP BY
非聚合列(name
),否则查询将默认为一组;整个结果集;并选择一个任意的 name
:
SELECT `name`, COUNT(table2.voter) AS `count`
FROM `table1`
LEFT JOIN `table2`
ON table1.idx = table2.support
GROUP BY `name`
ORDER BY count DESC;
您可以在 ORDER BY
中使用列别名,所以我也更新了这个
我想用两个table设计投票系统。
第一个 table 包含候选人的索引和姓名。
另一个包含索引,选民和选民支持的候选人索引。
一个选民可以支持多个候选人。
我想要一个 sql 查询来显示候选人的姓名及其支持者的数量。
所以结果看起来像
约翰 12、鲍勃 8、大卫 3...
SELECT `name`, COUNT(table2.voter) AS `count`
FROM `table1`
LEFT JOIN `table2`
ON table1.idx = table2.support
ORDER BY COUNT(table2.voter) DESC;
上面的查询只给出了一行选民总数。
任何人都可以给我任何提示吗?
SELECT `name`, COUNT(table2.voter) AS `count`
FROM `table1`
LEFT JOIN `table2` ON table1.idx = table2.support
GROUP BY `name`
ORDER BY COUNT(table2.voter) DESC;
您错过了一个 group by
,因此只得到第一个结果。
您需要GROUP BY
非聚合列(name
),否则查询将默认为一组;整个结果集;并选择一个任意的 name
:
SELECT `name`, COUNT(table2.voter) AS `count`
FROM `table1`
LEFT JOIN `table2`
ON table1.idx = table2.support
GROUP BY `name`
ORDER BY count DESC;
您可以在 ORDER BY
中使用列别名,所以我也更新了这个