我可以轻松找到对象的所有标签并使用以下查询获取每个标签的计数。
SELECT *, COUNT(*) as count
FROM book_tags
JOIN tags ON book_tags.tag_id = tags.id
WHERE book_id = 66 GROUP BY tag_id
这可行,但 user_id 列会被 GROUP BY 混合。我仍然想要本书中每个标签的标签总数,但我还想创建一个别名来告诉我当前用户 (user_id = 1) 是否对每个标签的计数做出了贡献。
然后,我将显示该书具有的所有标签,但对该用户添加的标签进行不同的样式设置。我可以通过循环和多个查询来完成此操作,看起来它应该可以在一个中完成。
最佳答案
SELECT *, COUNT(*), SUM(user_id = 1) AS contributed
etc...
MySQL 会将 user_id = 1
比较的 bool 值 true/false 转换为整数 1
或 0
,然后进行求和。当您检索查询结果时,如果它非零,则表明该特定用户已做出贡献,该值为贡献总数。
关于mysql - 获取标签计数以及当前用户是否对该计数做出了贡献,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9853156/