如何将列中非空Client Account ID填充至同列空值行?
填充NULL列的解决方法
你的两个尝试都存在问题:
- 第一个语句属于无效操作:你把非NULL的
[Client Account ID]赋值给自己,没有对任何NULL行做修改,自然看不到效果。 - 第二个语句存在报错风险:如果表中有多个非NULL的
[Client Account ID],子查询会返回多行结果,直接赋值给单个字段会触发报错;即便只有一个非NULL值,也需要确保子查询返回单个值才能正常执行。
正确的实现语句
如果你的表中只有一个有效的非NULL[Client Account ID],可以用聚合函数(MAX()/MIN())提取这个唯一值,再填充到NULL行:
UPDATE [Andy's_Cleanup_Database].[dbo].[Implementation_Results] SET [Client Account ID] = ( SELECT MAX([Client Account ID]) FROM [Andy's_Cleanup_Database].[dbo].[Implementation_Results] WHERE [Client Account ID] IS NOT NULL ) WHERE [Client Account ID] IS NULL;
补充说明
MAX()和MIN()任选其一即可,只要目标列只有一个非NULL值,两者结果完全一致。- 如果表中有多个不同的非NULL ID,你需要先明确要使用哪个ID填充,比如在子查询中添加额外条件来定位到目标ID,例如:
SELECT MAX([Client Account ID]) FROM [Andy's_Cleanup_Database].[dbo].[Implementation_Results] WHERE [Client Account ID] IS NOT NULL AND [其他标识字段] = '目标标识'; -- 通过其他字段筛选出你需要的那个ID
内容的提问来源于stack exchange,提问作者Andy Martin
相关产品推荐
相关产品推荐

