gpt4 book ai didi

mysql - 是否可以按交替顺序输出两个子查询的联合结果?

转载 作者:行者123 更新时间:2023-12-01 03:02:14 24 4
gpt4 key购买 nike

假设我在 UNION 语句中有两个子查询,如下所示:

(
SELECT *
FROM users
ORDER BY registration_date
)
UNION ALL
(
SELECT *
FROM food
ORDER BY popularity
)

输出如下:
Bob
Alice
Steve
Mark
...
Sandwich
Pizza
Burger
Fries
...

是否可以以交替方式输出它们,使得输出为:
Bob
Sandwich
Alice
Pizza
Steve
Burger
Mark
Fries
...

每个查询输出是数千个项目。

最佳答案

您可以使用 row_number()如果您运行的是 MySQL 8.0:

(select name, 1 src, row_number() over(order by registration_date) rn from users)
union all
(select name, 2, row_number() over(order by popularity) from food)
order by rn, src

在每个 union ed 子查询,我们使用 row_number()对记录进行排名,并添加另一列,名为 src识别记录来自哪个表。

那么剩下要做的就是 order by分配的 row_number() ,使用附加列来交替记录。

请注意,我修改了您的查询以枚举列 select在子查询中编辑; select *通常不是一个好习惯,尤其是对于 union all ,这要求两个数据集具有相同的列数(具有等效的数据类型)。

关于mysql - 是否可以按交替顺序输出两个子查询的联合结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60339761/

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