gpt4 book ai didi

sql - 如何在 SELECT 语句中生成顺序索引值(如列表的顺序)

转载 作者:行者123 更新时间:2023-12-04 18:25:31 24 4
gpt4 key购买 nike

假设我有这两个表:

TABLEA          TABLEB
----------- -----------
ID | NAME ID | TABLEA_ID | NAME
1 | ... 1 | 1 | ...
2 | 2 | 2 | ...
3 | 3 | 2 |
4 | 4 | 2 |
5 | 3 |
6 | 3 |
7 | 4 |
8 | 2 |

我想要一个SQL SELECT语句,当TABLEA.ID = TABLEB.TABLEA_ID时可以生成这样的结果,你可以在这里注意我不关心分组或排序,我只想为相同 TABLEB.TABLEA_ID 的每一行生成一个增量值

ID | TABLEA_ID | ORDER_INDEX | NAME 
1 | 1 | 0 | ...
2 | 2 | 0 | ...
3 | 2 | 1 |
4 | 2 | 2 |
5 | 3 | 0 |
6 | 3 | 1 |
7 | 4 | 0 |
8 | 2 | 3 |

我尝试在多个子选择组合中使用 rownum 来根据 TABLEA_ID 中的值生成 ORDER_INDEX,但没有成功。

  • 你有没有提示在普通 SQL 中执行此操作,甚至可以使用普通 SQL 实现。
  • 是否可以通过 PL/SQL 实现?如果可能怎么办?

非常感谢您。

最佳答案

我相信这就是你想要的:

SELECT B.ID, B.TABLEA_ID, 
ROW_NUMBER() OVER(PARTITION BY B.TABLEA_ID ORDER BY B.ID) - 1 ORDER_INDEX,
B.NAME -- OR A.NAME, its not clear on your question
FROM TABLEB B
LEFT JOIN TABLEA A
ON B.TABLEA_ID = A.ID

关于sql - 如何在 SELECT 语句中生成顺序索引值(如列表的顺序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9331569/

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