我正在查看row_number()的文档,但我不明白这是什么用途。我有2个查询,我试图将结果加入到一个表中。使用windows函数row_number()会在这种情况下有用。我需要了解使用此功能的用法。文档说明"其分区中当前行的编号,从1&#34开始计算;但没有给出一个例子。
答案 0 :(得分:1)
ROW_NUMBER() OVER ..
无法帮助您JOIN
。要连接到表,可以在JOIN
子句和FROM
参数中使用ON
来指定要连接的两个表之间共享的字段。
对于ROW_NUMBER()
,假设您有一个像
+-------+----------+
| color | animal |
+-------+----------+
| red | panda |
| red | squirrel |
| black | elephant |
| black | squirrel |
| black | panther |
| white | rabbit |
| white | cat |
| white | dog |
+-------+----------+
如果你写了:
SELECT
color, animal, ROW_NUMBER() OVER (PARTITION BY color ORDER BY animal) as rownumber
FROM myTable;
你会得到:
+-------+----------+-----------+
| color | animal | rownumber |
+-------+----------+-----------+
| red | panda | 1 |
| red | squirrel | 2 |
| black | elephant | 1 |
| black | squirrel | 3 |
| black | panther | 2 |
| white | rabbit | 3 |
| white | cat | 1 |
| white | dog | 2 |
+-------+----------+-----------+
它的作用是"分区"按颜色记录。基本上用颜色制作动物群。然后按动物名称对每个组进行排序。然后它在它们的颜色分区中从1开始编号。
我无法想象这会对join
有所帮助,但也许你有一个奇怪的情况,即两个表没有字段到字段的关系,所以你必须对记录进行排名并加入排名?我希望不要因为那将是困难的,粗略的和昂贵的。