[英]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_id
和date
,但如果有另一列,如唯一 id 或任何其他主键,最好使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.