PgAdmin+PostgreSQL:如何为指定行范围的列填充数据
解决方法
你需要用UPDATE语句修改现有行的数据,而非INSERT(后者是新增行)。具体操作分两种场景:
场景1:表有自增主键或有序标识列
如果你的表有类似id的自增列(值从1到1000),直接通过WHERE子句限定行范围即可:
UPDATE Table_Name SET column_name = '1956-08-07' WHERE id BETWEEN 1 AND 1000; -- 替换为你的主键列和目标行范围
场景2:表无明确有序列
如果没有自增列,需用窗口函数ROW_NUMBER()先给行编号,再更新指定范围的行:
WITH numbered_rows AS ( SELECT *, ROW_NUMBER() OVER (ORDER BY some_column) AS row_num -- some_column选能确定行顺序的列,比如创建时间 FROM Table_Name ) UPDATE Table_Name SET column_name = '1956-08-07' FROM numbered_rows WHERE Table_Name.primary_key = numbered_rows.primary_key -- 替换为你的主键列 AND numbered_rows.row_num BETWEEN 1 AND 1000;
注意事项
- 替换语句中的
Table_Name、column_name、primary_key、some_column为你表的实际名称和列名。 - 无主键时,可改用唯一标识的组合列关联主表和临时编号表。
- 执行前建议先用
SELECT验证范围是否正确:SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY some_column) AS row_num FROM Table_Name ) t WHERE row_num BETWEEN 1 AND 1000;
内容的提问来源于stack exchange,提问作者Rado
相关产品推荐
相关产品推荐

