php – 自定义MySQL排序
发布时间:2020-12-13 17:56:12 所属栏目:PHP教程 来源:网络整理
导读:我有一个需要自定义排序的查询,修剪到最小的东西,如: SELECT u.*,p.*,p.id as product_idFROM users u,products p WHERE u.id = p.user_idORDER BY product_id DESC 我得到一组行,如: UserID ProductID 2 5 2 4 3 3 1 2 1 1 但我希望它实际上像这样对SOMET
我有一个需要自定义排序的查询,修剪到最小的东西,如:
SELECT u.*,p.*,p.id as product_id FROM users u,products p WHERE u.id = p.user_id ORDER BY product_id DESC 我得到一组行,如: UserID ProductID 2 5 2 4 3 3 1 2 1 1 但我希望它实际上像这样对SOMETHING进行排序(因此没有2个UserID与彼此相邻): UserID ProductID 1 2 2 4 3 3 2 5 1 1 这甚至可以用MySQL,还是我需要一些PHP魔术?
解决此问题的规范方法是枚举重复的行,然后按该值排序:
select t.* from (SELECT u.*,p.id as product_id,row_number() over (partition by u.id order by (select NULL)) as seqnum FROM users u join products p on u.id = p.user_id ) t order by seqnum,id; 只要没有一个用户具有非常长的序列(如在您的示例中),这将起作用. 没有“始终有效”的解决方案,因为很容易想出一个无法实现目标的情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |