gpt4 book ai didi

sql - 如何在 SQL 查询中将 SQL 结果作为不同的集合

转载 作者:行者123 更新时间:2023-12-01 09:50:02 25 4
gpt4 key购买 nike

我有以下要求:通过使用 SQL IN 子句获取前 20 条记录。我的查询是

Select CatId,Name,Color 
from Table1
where CatId in (10,11,12)

结果是这样的

 CatId  | Name   | Color
------- -------- ------
10 Name1 Blue
10 Name2 red
10 Name3 Blue
11 Name4 Blue
10 Name5 red
12 Name6 Blue
11 Name7 Blue
12 Name8 Blue
.......

但我需要像集合 集合 这样的结果,它在 (10,11,12) 中有 CatIds

CatId  | Name   | Color
------- -------- ------
10 Name1 Blue
11 Name4 Blue
12 Name6 Blue
10 Name2 Red
11 Name7 red
12 Name8 Blue
......

请问SQL查询有什么办法吗?

最佳答案

您可以使用带有 ROW_NUMBER 的查询:

Select CatId, Name, Color
from (
Select CatId, Name, Color,
row_number() over (partition by CatId order by Name) AS rn
from mytable
where CatId in (10,11,12)) as t
order by rn, Name

上述查询使用带有PARTITION BY 子句的ROW_NUMBER,以便枚举具有相同CatId 切片的记录。因此,例如,为 CatId = 10 的记录分配编号 1, 2, 3, ...,然后为 CatId = 11 的记录分配编号> 同样分配了编号 1, 2, 3, ... 等等。使用这些数字,我们可以创建所需的订单。

关于sql - 如何在 SQL 查询中将 SQL 结果作为不同的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39363311/

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