【发布时间】:2013-06-02 09:49:18
【问题描述】:
我有一个表结构
编号 | col1 | col2 1 | 1 | val1 2 | 2 | val2 3 | 3 | val3 -- 4 | 4 | val4 5 | 5 | val1 6 | 6 | val6我想执行删除操作来删除其中一行(比如 id=3),这样我的数据就会变成这样:
编号 | col1 | col2 1 | 1 | val1 2 | 2 | val2 4 | 4 | val4 5 | 5 | val1 6 | 6 | val6但我希望它像
编号 | col1 | col2 1 | 1 | val1 2 | 2 | val2 4 | 3 | val4 5 | 4 | val1 6 | 5 | val6我希望我的 col1 始终按顺序排列,而与其他列无关。 关于如何去做的任何建议。只能在一个更新查询中完成吗?我使用 POSTGRESQL 作为我的数据库并使用 C# 进行编码。我在数据库中有大约 1000 行。 请帮帮我。
【问题讨论】:
-
我们可以看看你到目前为止尝试了什么吗?
-
不熟悉postgresql,但一般
update table set col1 = col1 - 1 where col1 > @col1_value_deleted应该可以工作。 -
我不知道您要做什么,但是,您可以创建一个临时表并通过 select 将值插入一行。尝试考虑您执行的每个删除运行更新以更正顺序?现在您的数据库有 1000 行,但是,考虑到 10,000、1,000,0000。太疯狂了……
-
表格的全部意义在于将一组值保持在一起,通常是因为它们代表一个单一的实体。您是否需要存储
col1的值?如果您不这样做,请考虑使用一个视图(或简单查询)来即时计算col1的连续值序列。
标签: c# sql postgresql