gpt4 book ai didi

mysql - 互斥对

转载 作者:行者123 更新时间:2023-11-29 12:33:52 26 4
gpt4 key购买 nike

我需要一个根据条件将用户配对的查询。该查询将返回动态数量的行,等于符合条件的对的数量。该查询返回两个字段,id1id2,每个字段都是用户的 ID。我将如何创建查询以便 id 不会再次出现在另一行中?

我想要返回的示例:

id1 id2
001 003
004 006
009 011
023 042

想要退回的内容示例:

id1 id2
001 003
003 004
012 002
023 012

最佳答案

如果我理解正确的话,您有一些表,例如用户,并且您想要对用户进行配对。您可能还有 where 子句或其他条件。

你实际上可以做到这一点。枚举行,然后根据组合相邻的偶数和奇数进行条件聚合:

select min(u.userid) as userid1, max(u.userid) as userid2
from (select u.*, (@rn := @rn + 1) as seqnum
from users u cross join
(select @rn := 0) vars
) u
group by floor((seqnum - 1) / 2)
having userid1 <> userid2;

您可以轻松地在子查询中添加 where 子句。

关于mysql - 互斥对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27083774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com