我需要一个非常奇怪的订单。假设我有一张这样的table:
pkey id2
1 8
2 3
3 12
4 8
5 7
6 8
7 3
8 1
我需要按以下顺序选择:follow pkey,除非id2有重复项。然后先做复制品。
因此,order by应该给出以下结果:
pkey id2
1 8
4 8
6 8
2 3
7 3
3 12
5 7
8 1
我不知道从哪里开始。分组依据?子查询?有什么想法吗?或者我应该去吗?我更喜欢用mysql。
3条答案
按热度按时间ux6nzvsh1#
乌伊尔多在评论中给出了答案。我仍然想给他学分,但人们会感到困惑,所以我张贴这个答案无论如何,但我邀请Uuerdo张贴的答案,这样我就可以标记他的答案是正确的。
不管怎样,解决方案是:
kninwzqo2#
在我简洁的暗示之后,罗默想出了这个解决方案:
它使用聚合子查询来查找每个id2的第一个pkey,并使用外部查询中的那些pkey值来控制排序。
thtygnil3#
我会将查询加入到一个计算重复次数的聚合查询中
id2
每个人pkey
有。自从多次pkey
可以有相同数量的关联id2
s、 我会把最小的pkey
只是为了确保所有的行都是相同的pkey
一起: