如何解决Mysql-如何通过交替1,2,3,1,2,3,1,2,3,行来排序结果,有可能吗?
采用:
SELECT x.client_id,
x.project_id,
x.project_name
FROM (SELECT t.client_id,
t.project_id,
t.project_name,
CASE
WHEN @client_id != t.client_id THEN @rownum := 0
WHEN @client_id = t.client_id THEN @rownum := @rownum + 1
ELSE @rownum
END AS rank,
@client_id := t.client_id
FROM TABLE t,
(SELECT @rownum := 0, @client_id
ORDER BY t.client_id) r) x
ORDER BY x.rank, x.client_id
MysqL没有任何排名功能,但是幸运的是您可以使用变量。关键是在client_id与先前的client_id不匹配时重置@rownum值- 子查询中的ORDER BY是为了确保客户机顺序正确。
解决方法
我想按客户端1、2、3,然后再次按客户端1、2、3等对结果进行排序。
有没有一种方法,而无需使用for循环或进行三个单独的查询?不仅如此,而且我正在处理分页数据,因此它需要返回x结果,但要始终如一。
有任何想法吗?GROUP BY?
client_id project_id project_name
---------- ---------- ------------
1 42 project abc
2 49 project xyz
3 41 project 123
1 22 project apple
2 29 project orange
3 21 project banana
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。