mysql - 获取标签计数以及当前用户是否对该计数做出了贡献

标签 mysql

我可以轻松找到对象的所有标签并使用以下查询获取每个标签的计数。

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 转换为整数 10,然后进行求和。当您检索查询结果时,如果它非零,则表明该特定用户已做出贡献,该值为贡献总数。

关于mysql - 获取标签计数以及当前用户是否对该计数做出了贡献,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9853156/

相关文章:

c++ - 如何将一个简单的 QSqlQueryModel 从一个类返回到另一个类?

php - 卡住无效参数编号 : number of bound variables does not match number of tokens

MySQL 更新多行中 1 列的部分内容

mysql - 需要帮助使用在两个单独表的列之间进行算术运算的函数将列添加到一个表

mysql - 插入新记录或通过更新值来更新记录

c# - 我的 Webforms 数据存储在哪里?

sql - 无法检索从 mysql 函数返回的值

php - 如何从我的数据库中选择所有具有属于特定字符串一部分的值的行?

php - 将数据从一个表插入到另一个php sql

java - 由 : org. hibernate.MappingException 引起:属性映射的列数错误: