【发布时间】:2022-01-16 19:34:22
【问题描述】:
我根据另一个列的值添加了一个新列。我想用正确的值加上一个按元素分组的增量数字来更新那个新的列。 例如:
| city | new_colum |
|---|---|
| Madrid | Madrid |
| Madrid | Madrid-2 |
| Madrid | Madrid-3 |
| Sevilla | Sevilla |
| Sevilla | Sevilla-2 |
| Sevilla | Sevilla-3 |
| Sevilla | Sevilla-4 |
| Alicante | Alicante |
我尝试了以下代码,但总是遇到语法错误。
UPDATE cities as c
SET c.new_colum = concat(t.city,'-', t.col)
FROM (SELECT ROW_NUMBER() OVER(partition by city) AS col, city_st FROM cities) t;
【问题讨论】:
-
可能会使用 CTE,然后从中更新?
-
您的数据库是什么(例如 MySQL、SQL Server 等)? SQL 只是一种语言,而不是实际产品。
-
请说明 DBMS,以便我们可以准确地告诉您如何实现您的目标。但对于初学者来说,您不能在更新期间创建新列。您只能更新现有列。
-
我的数据库是mysql。
-
我尝试使用 cte 但不工作 @huMptyduMpty: 使用 cte (col) as (SELECT ROW_NUMBER() OVER(partition by city ORDER BY city) AS col FROM cities) 将城市更新为 c 设置 c .new_colum = concat(c.new_column,'-', cte.col) ;
标签: mysql sql sql-update row-number