【问题标题】:How can I preserve one of my tables ordering when I query to join it with another table?当我查询将它与另一个表连接时,如何保留我的一个表的顺序?
【发布时间】:2017-08-18 19:57:26
【问题描述】:

我使用的是 PostgreSQL 9.2.18。对于本例,我有一个名为 tblOriginal 的表,还有一个名为 tblChanges 的表。

tblOriginal 具有以下字段:

ID(VarChar 255), Description(VarChar 2056), Severity (SmallInt)

tblChanges 具有以下字段:

ID(VarChar 255), NewSev(SmallInt)

tblOriginal 已填写所有值,共有 150 个条目。 tblChanges 有一个 tblOriginal 的子集,有 50 个条目,并且该表的所有严重性级别都不同。我想将这些更改导入 tblOriginal 而不重新排序 tblOriginal 表。

【问题讨论】:

  • 在 tblChanges 中,您是否重复过相同的 ID?也就是说,您是否需要确保只进行“最新”更新以与原始更新同步?

标签: sql postgresql


【解决方案1】:

表是无序集。所以不用担心改变 tblOriginal 表的顺序。

所以只是一个简单的更新

UPDATE tblOriginal 
SET Severity = NewSev
FROM tblChanges 
WHERE tblOriginal.ID = tblChanges.ID

【讨论】:

  • 保持表的顺序很重要,运行一个只选择表的所有条目的查询在运行此命令后会发生变化。它对一些条目重新排序。
  • 我告诉过你,表格是无序的集合,所以即使现在你有订单,'want' 也不是保证。如果您想以任何顺序显示数据,您需要使用ORDER BY。检查HERE了解更多信息
  • 我已经通过使用以下语句解决了这个问题。 ALTER TABLE tblOriginal ADD COLUMN key_column BIGSERIAL PRIMARY KEY;。然后我使用了SELECT * from tblOriginal ORDER BY key_column;
  • 对你有好处,但这是一个非常不同的问题。即使您通过自动生成的主键获得订单,也不能保证所有情况下的订单,因为我已经在上面的链接中向您展示了。所以要小心这个。
  • 如何可靠地将行序列化为相同的顺序?
猜你喜欢
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多