Mysql查询不求和多条记录,只取第一条记录
问题描述:
我们有一个表(调查),它有不同的调查问题。每个survey_id在此表中只出现一次。Mysql查询不求和多条记录,只取第一条记录
我们有一张投票表(vote_survey_table),它记录每个调查问题的用户投票。该表的字段为survey_id,vote_yes,vote_no,user_id等。此表对于每个survey_id都有多个条目。
我想要查询投票表来合计一个给定的调查问题的所有投票,但查询我只提出行int他投票表的第一个实例。
SELECT survey.survey_id, vote_survey_table.vote_yes AS cnt,
survey.survey_name, survey.survey_details
FROM survey
LEFT JOIN vote_survey_table AS votedb ON vote_survey_table.vote_survey_id = survey.survey_id
GROUP BY survey.survey_id
ORDER BY cnt DESC, survey.survey_id LIMIT 0,5
我在这个查询中缺少什么,应该告诉查询在投票表中添加survey_id的所有实例并总结结果?我试着将LEFT JOIN改为INNER JOIN,但是这也没有办法。
一如既往地提前致谢。
答
您需要对选票进行总结。
SELECT survey.survey_id, SUM(vote_survey_table.vote_yes) AS cnt,
survey.survey_name, survey.survey_details
FROM survey LEFT JOIN vote_survey_table AS votedb
ON vote_survey_table.vote_survey_id = survey.survey_id
GROUP BY survey.survey_id, survey.survey_name, survey.survey_details
ORDER BY cnt DESC, survey.survey_id LIMIT 0,5
如果vote_yes
是一个布尔字段,然后使用COUNT
代替SUM
。
+0
感谢你这样做......它做到了。我知道我错过了一些显而易见的事情...... – Kevin 2012-07-18 20:59:23
答
你根本没有总结。您应该使用聚合函数一样
SELECT SUM(vote_survey_table.vote_yes) AS cnt
见http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
一件事,你不使用'SUM'或'COUNT'任何地方。那么你如何期待聚合发生? – RedFilter 2012-07-18 20:45:33
分组不自动加起来。使用计数(是) – Alfabravo 2012-07-18 20:45:58
字段是'vote_yes'和'vote_not'布尔字段吗? – 2012-07-18 21:00:36