Mah*_*shi 1 sql t-sql sql-server sql-update
我有一个包含值的表:
dbid name userid
------------------------------
154 xyz NULL
987 xyz NULL
777 xyz 5
111 abc NULL
745 abc NULL
748 abc 6
Run Code Online (Sandbox Code Playgroud)
预期输出:
dbid name userid
------------------------------
154 xyz 5
987 xyz 5
777 xyz 5
111 abc 6
745 abc 6
748 abc 6
Run Code Online (Sandbox Code Playgroud)
userid 列中除一个名称对应的值外,所有空值均为空。我想在 userid 中为 name = 'xyz' 的所有行设置 5。同样,想要更新表以在 userid 中设置 6,其中 name = 'abc'。
对于上述场景,更新表的查询应该是什么?
注意:以上只是一个例子。我有一个包含数十万条记录的表。我无法在查询中写入 id 5 或 6。
小智 5
尝试这个
update table_name
set table_name.userid = (
select top(1) ss.userid
from table_name ss
where ss.name = table_name.name
and ss.userid is not null
)
where table_name.userid is null
Run Code Online (Sandbox Code Playgroud)
此查询正在搜索userid
名称相同的第一条记录,如果userid
为空则更新