Sql 如何更新空数据字段以匹配其他列数据字段?

Sql 如何更新空数据字段以匹配其他列数据字段?,sql,database,oracle,Sql,Database,Oracle,我有一个带有“user\u id”列的表。在同一个表中,我有另一个标记为“GMID”的数据字段。在该GMID列中有一些字段为null,而非null的字段的值与该行中的user_id数据字段相匹配。是否有方法创建一个脚本或查询,该脚本或查询将更新GMID列中的所有空字段,以匹配该行中用户id行中的相应数据值?是否有任何最佳实践我应该遵循,不同的方法?提前感谢任何能提供帮助的人。当然有 UPDATE your_table SET GMID=user_id WHERE GMID IS NULL 但您

我有一个带有“user\u id”列的表。在同一个表中,我有另一个标记为“GMID”的数据字段。在该GMID列中有一些字段为null,而非null的字段的值与该行中的user_id数据字段相匹配。是否有方法创建一个脚本或查询,该脚本或查询将更新GMID列中的所有空字段,以匹配该行中用户id行中的相应数据值?是否有任何最佳实践我应该遵循,不同的方法?提前感谢任何能提供帮助的人。

当然有

UPDATE your_table
SET GMID=user_id
WHERE GMID IS NULL
但您甚至不需要WHERE-if-GMID始终与user\u-id相同

顺便问一下,为什么需要在一个表中包含两列相同的数据?

当然有

UPDATE your_table
SET GMID=user_id
WHERE GMID IS NULL
但您甚至不需要WHERE-if-GMID始终与user\u-id相同


顺便问一下,为什么一个表中需要两列数据相同?

另一种方法是使用“coalesce”函数。它将返回第一个非空值。这种方法不涉及表上的数据更改。在查询中,您可以“选择coalesce(GMID,user_id)作为GMID…”它将返回不为null的第一列

oracle数据库的文档:


更新:我刚刚颠倒了coalesce函数中列的名称…

另一种方法是使用“coalesce”函数。它将返回第一个非空值。这种方法不涉及表上的数据更改。在查询中,您可以“选择coalesce(GMID,user_id)作为GMID…”它将返回不为null的第一列

oracle数据库的文档:


更新:我刚刚颠倒了coalesce函数中列的名称…

谢谢!我们有一些悬而未决的设计更改,因此我们的团队可能会更改我们进行此操作的方法。最后,为了回答您的问题,我们的团队目前正在进行一些数据迁移,我的导师希望我更新此表以及发生GMID的任何其他表中的字段。所以我想这不仅仅是一张桌子。另外,如果我想更新GMID的每个实例以匹配每个表中的user_id,您有什么建议吗?如果这不清楚,很抱歉。我还在学习:)。。此外,此查询是否会更新每个GMID以匹配该行中唯一的对应用户id?此查询将更新所有空的
GMID
。它将把
user\u id
列中的值从原始列放到
GMID
列中,谢谢!我们有一些悬而未决的设计更改,因此我们的团队可能会更改我们进行此操作的方法。最后,为了回答您的问题,我们的团队目前正在进行一些数据迁移,我的导师希望我更新此表以及发生GMID的任何其他表中的字段。所以我想这不仅仅是一张桌子。另外,如果我想更新GMID的每个实例以匹配每个表中的user_id,您有什么建议吗?如果这不清楚,很抱歉。我还在学习:)。。此外,此查询是否会更新每个GMID以匹配该行中唯一的对应用户id?此查询将更新所有空的
GMID
。它将把
user\u id
列中的值从该原始列放到
GMID