sql - SQL 对数据库中的用户按收到意见最多的排序
问题描述
我有两张桌子:
`users` (id, phone_number, first_name, last_name, email)
`opinions` (id, user_id, type, comment, date)
在第二个表opinions
字段中type
可能有值“正”或“负”。用户可能会收到多个正面和负面的意见。我想构建 sql 查询,它允许我按最多的正面或最多的负面意见对用户进行排序。
我已经创建了如下所示的 sql 查询,但它似乎不起作用,它正在合并一条记录中的意见总数,但我想按正面或负面意见的最高数量显示所有用户的排序表。不幸的是,我的例子不起作用,我不知道该怎么做。请你帮助我好吗?
SELECT
users.*,
count(opinions.id) as sum_negative
FROM users
LEFT JOIN opinions ON opinions.user_id = users.id
WHERE
opinions.type = 'negative'
ORDER BY sum_negative DESC
解决方案
您需要按用户 ID 对结果进行分组 https://www.w3schools.com/sql/sql_groupby.asp
SELECT
users.*,
count(opinions.id) as sum_negative
FROM users
LEFT JOIN opinions ON opinions.user_id = users.id
WHERE
opinions.type = 'negative'
GROUP BY users.id
ORDER BY sum_negative DESC
推荐阅读
- css - Bootstrap 网格图像问题高度元素
- python - 有没有办法通过多个标签输入来使用 svm 预测一个标签
- android - 旧的 recyclerview 在旋转后保留为背景
- c - Print Caesar Shift in C 正在打印输入的 HELLO 文本
- android - java.lang.SecurityException: adb 清除用户数据被禁止。'; 代码:'1'
- php - 如何从具有主题 functions.php 文件的函数中调用插件短代码?
- angularjs - 当我的其他功能调用时如何聚焦/单击按钮?
- firebase - 有没有办法在 firebase 控制台中查看每个 firebase 函数的调用次数?
- ruby-on-rails - Rails 中的时间模块
- java - 从 SQL 数组转换为 String[] 数组会引发 PSQLException