我在从数据库中选择某些内容时遇到问题。这是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。
目前,如果有...
...写在表中,语法将计算喜欢和不喜欢,因此结果将是 6。我需要这个结果为零,这意味着在计数时,必须从喜欢的数量推断出不喜欢。这也意味着这部分句子:ORDER BY COUNT(table2.likes) ASC
必须更改,但我不知道如何更改。
最佳答案
通过 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
更改为按name
。 GROUP BY
列应与您选择的列匹配。
关于mysql - 从 mysql 数据库中选择一些内容并按计数(其中)排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39692084/