我有一张桌子 submitted_answers 和表回答
在 submitted_answers 中我有 id 和 ans 字段 ans 是一个varchar(255)字段,包含逗号分隔的数据,例如“18,19,20,22,23,25”
所有这些数字都与答案表中的 ID 相关联 示例表结构
submitted_answers
id (int) ans(varchar(255))
1 "18, 19"
2 "21, 22"
answers
id ans
18 "Money"
19 "Gold"
20 "Whatever"
21 "Whatever2"
如何加入这些表格,看看 submitted_answers 。 ans 字段中哪些前5个项目最多。
答案 0 :(得分:1)
诚然,您的数据库结构很糟糕。您不应该在关系数据库中将id列表表示为逗号分隔的字符串。
也就是说,通过巧妙地使用on
子句,你可以做你想做的事情:
select a.id, a.ans, count(*) as cnt
from submitted_answers sa join
answers a
on concat(', ', sa.ans, ', ') like concat('%, ', a.id, ', %')
group by a.id, a.ans
order by cnt desc
limit 5
答案 1 :(得分:0)
你走了:
SELECT answer_num, COUNT(*) AS magnitude
FROM answers
GROUP BY answer_num
ORDER BY magnitude DESC
LIMIT 5
工作示例: http://sqlfiddle.com/#!2/80a68/2
请注意我在那里设置数据库的方式,您可能需要考虑这种类型的设置,以获得用户和用户答案的多对多关系。