【问题标题】:Adding row IDs to table in Snowflake SQL在 Snowflake SQL 中向表中添加行 ID
【发布时间】:2018-10-05 05:28:56
【问题描述】:

我需要将具有唯一整数/哈希的列添加到表中以用作行 ID。

我用这个查询创建了一个 DUPLICATES 表:

CREATE TABLE duplicates AS
SELECT
    "a", "b", COUNT(*) as _count
FROM
    "table"
GROUP BY
    "a", "b"
HAVING 
    _count > 1
ORDER BY 
 _count desc

现在我需要为每一行添加一个包含唯一 ID 的列。我试过ALTER TABLE DUPLICATES ADD 'id' int identity(1,1),但是这会返回:SQL 编译错误:无法将具有非常量默认值的列“id”添加到非空表“DUPLICATES”

我现在有点缺乏想法,因为关于 Snowflake SQL 的讨论还没有普及,而且 Snowflake 的帮助页面对我没有帮助。

【问题讨论】:

    标签: sql snowflake-schema snowflake-cloud-data-platform


    【解决方案1】:

    在 Snowflake 中执行此操作的最简单方法是使用序列。非常简单,但它们可用于为主键或任何需要唯一值的列生成值。使用方法:

    https://docs.snowflake.net/manuals/user-guide/querying-sequences.html

    【讨论】:

      【解决方案2】:

      一个简单的方法是使用row_number():

      CREATE TABLE duplicates AS
          SELECT ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) as id,
                 "a", "b", COUNT(*) as _count
          FROM "table"
          GROUP BY "a", "b"
          HAVING  _count > 1
          ORDER BY _count desc;
      

      【讨论】:

        猜你喜欢
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-21
        • 1970-01-01
        相关资源
        最近更新 更多