【问题标题】:How do I create row numbers in Redshift?如何在 Redshift 中创建行号?
【发布时间】:2014-08-17 15:13:26
【问题描述】:

我想使用 select 语句创建一个表并添加一个带有行号的列

所以我想写这样的东西:

create table schema.table_w_rownumbers as 
select 
    identity(1, 1) as nrum,
    foo.*
from schema.initial_table as foo;

【问题讨论】:

  • 您需要行号还是标识列?您将来会插入 table_w_rownumbers 并希望值自动递增吗?
  • @usr - 你会收到类似代码的错误 ERROR: Ranking window functions require order by clause.
  • @JChao - 我不会插入。我的目标是测试两个 Redshift 表是否 完全 与此处所述相同:stackoverflow.com/questions/24436540/…

标签: sql postgresql amazon-redshift


【解决方案1】:

试试这个代码。确保将order by id 更改为需要订购的任何内容。

Create Table schema.table_w_rownumbers
AS
(
select row_number() over (order by id) as nrum, * schema.initial_table
);

【讨论】:

  • 在这种情况下,我不想以任何方式订购它。我希望行号与 select 语句返回的顺序相对应。
  • 除非指定,否则不保证订单。因此,如果添加/删除/更改了索引,则 select 语句返回的集合可能会有所不同。既然您正在比较数据,那么订购两者有什么问题?
【解决方案2】:

这对我有用!

create table schema.table_w_rownumbers as 
select 
  row_number() over (partition by 1) as nrum,
  foo.*
from schema.initial_table as foo;

【讨论】:

    猜你喜欢
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多