gpt4 book ai didi

sql - 如何为给定的一组行创建某种迭代器(或人工 ID)?

转载 作者:行者123 更新时间:2023-11-29 13:05:17 27 4
gpt4 key购买 nike

抱歉这个愚蠢的标题,但我只是不知道如何调用它。

这就是我想要的。查看以下查询:

SELECT *
FROM (
SELECT xyz
)
JOIN ...
ORDER BY RANDOM()

我想知道查询结束时 xyz 行的初始顺序。所以我想到了这样的事情(伪SQL):

iterator = 1;
SELECT *
FROM (
SELECT iterator++, xyz
)
JOIN ...
ORDER BY RANDOM()

所以之后我的结果集将如下所示:

iterator | some other data
--------------------------
5 | ...
1 | ...
6 | ...
8 | ...
4 | ...
2 | ...
7 | ...
3 | ...

因此之后可以重新创建原始订单。

现在您可能会说:为什么不在选择 xyz 的地方简单地使用 id?很简单:没有 idxyz 数据是用户输入,我想在查询中为它创建一个人工 id

谢谢。

最佳答案

您应该能够使用 row_number() (这是一个 windowing function )来分配您想要的“迭代器”。这将为每一行创建一个序列号:

select *
from
(
select col,
row_number() over(order by col) rn
from yourtable
) src
order by random()

参见 SQL Fiddle with Demo

关于sql - 如何为给定的一组行创建某种迭代器(或人工 ID)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15126254/

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