mysql - 从 mysql 数据库中选择一些内容并按计数(其中)排序

标签 mysql sql select count sql-order-by

我在从数据库中选择某些内容时遇到问题。这是sql语句:

SELECT name 
FROM table1 
JOIN table2
ON table1.id=table2.advid 
GROUP BY advid 
ORDER BY COUNT(table2.likes) ASC

这将输出具有最小 table2.likes 到最高 table2.likes 值的 name

问题是table2.likes同时包含喜欢和不喜欢。表中喜欢的标记为1,不喜欢的标记为2。

目前,如果有...

The table

...写在表中,语法将计算喜欢和不喜欢,因此结果将是 6。我需要这个结果为零,这意味着在计数时,必须从喜欢的数量推断出不喜欢。这也意味着这部分句子:ORDER BY COUNT(table2.likes) A​​SC 必须更改,但我不知道如何更改。

最佳答案

通过 SUM() 使用条件聚合:

SELECT name 
FROM table1 t1 JOIN
     table2 t2
     ON t2.id = t2.advid 
GROUP BY name
ORDER BY SUM(CASE WHEN t2.likes = 1 THEN 1 ELSE -1 END) ASC;

注意:我将GROUP BY更改为按nameGROUP BY 列应与您选择的列匹配。

关于mysql - 从 mysql 数据库中选择一些内容并按计数(其中)排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39692084/

相关文章:

php - "group"mysql结果以获得更好的php性能

mysql - 错误 : Cannot enqueue Handshake after already enqueuing a Handshake

MySQL 数据透视表 - 仅显示 A 的记录,但不在 B 的 ID 列表中

javascript - 单击时选择元素立即关闭

jquery - 添加 optgroup 以及使用 jQuery 选择的选项

php - 为什么 isset($_POST {'variable' ]) 即使数组 $_POST 为空也返回 true?

php - php的神秘行为

sql - 如何通过SQL获取表中两行之间的差异并放置在新列中

MySQL 表枢轴 - 动态

php - 对列 C、D 进行分组/求和的 SQL 查询,当 A、B 相等时