繁体   English   中英

如何覆盖 SQL 中的 row_number 值?

[英]How to overwrite a row_number value in SQL?

如何覆盖 SQL (Redshift) 中的列?

以下查询给了我一个错误Target table must be part of an equijoin predicate

UPDATE table1
SET rank = temp.new_rank
FROM (
      SELECT ROW_NUMBER() OVER (PARTITION BY session_id ORDER BY date) AS new_rank
      FROM table1
      ) temp;

您需要一个WHERE子句将表的每一行与子查询的一行匹配:

UPDATE table1 AS t1
SET rank = t.new_rank
FROM (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY session_id ORDER BY date) AS new_rank
  FROM table1
) AS t
WHERE t.session_id = t1.session_id AND t.date = t1.date;

我在WHERE子句中使用列session_iddate ,但如果有另一列,如唯一 id 或任何其他主键,最好使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM