mysql order by子句不适用于我的查询

mysql order by子句不适用于我的查询,mysql,Mysql,假设我有以下mysql查询 SELECT friends.id, sum(if(friends.online =1,1,0)) AS online_friends, ...,... FROM some_table GROUP BY id ORDER BY sum(if(friends.online =1,1,0)) ASC; 我想要的是根据在线朋友ASC或DESC对结果表进行排序,问题是此查询不按在线朋友排序 有人能帮我解决我的问题吗 这是结果的一个例子 id group

假设我有以下mysql查询

SELECT friends.id, sum(if(friends.online =1,1,0)) AS online_friends, ...,...
FROM some_table
GROUP BY id
ORDER BY sum(if(friends.online =1,1,0)) ASC;
我想要的是根据在线朋友ASC或DESC对结果表进行排序,问题是此查询不按在线朋友排序

有人能帮我解决我的问题吗

这是结果的一个例子

id      group         online_friends
--     -------       ---------------- 
1       west               5
2       east               3
3       north              7
4       south              2
我想根据在线朋友对结果进行排序

您可以尝试以下方法:

SELECT friends.id, groups, sum(friends.online) AS online_friends
FROM some_table
where friends.online = 1
GROUP BY friends.id, groups
ORDER BY friends.online ASC;

我假设online和offline的值分别为1和0。

您的查询应该可以:

SELECT friends.id, sum(if(friends.online =1,1,0)) AS online_friends, ...,...
FROM friends
GROUP BY id
ORDER BY sum(if(friends.online =1,1,0)) ASC;
但是,我会这样写:

SELECT friends.id, sum(friends.online = 1) AS online_friends, ...,...
FROM friends
GROUP BY id
ORDER BY sum(friends.online = 1) ASC;
您还可以通过将订单更改为:

ORDER BY online_friends

如果您发现它仍然不起作用,那么请设置一个SQL FIDLE,以便我们可以看到发生了什么。

我正在将order by子句作为参数传递给存储过程。在order子句中有什么方法吗?@user3768541:-我不确定是否正确理解了您的问题,但您如何将order by子句作为输入参数传递。我认为这是不可能的,或者说是一个好的方法来继续。您可以从
某个表
中查询,但是您的列被限定为像
friends.id
。我想你没有告诉我们关于这个问题的一些事情。我只是提出了这个问题,它可能没有意义。我基本上想要的是根据网友的结果进行排序。我会做一个结果表来更好地展示你的权利,它应该会起作用。但不知何故,它在我的存储过程中不起作用。一定是我的程序出了什么问题