HPW*_*PWD 0 sql sql-server sql-server-2000
我有一个表单,显示系统列表及其当前状态.用户可以更改状态,并将状态更改的日期存储在历史记录表中.用户还可以在状态更改时更改服务器的名称(例如,如果由于租赁滚动而更换系统).
历史表存储详细信息,systemname如果系统名称在表单上发生更改,则还需要更新历史记录(以及所有历史更改).在表单上,有一个隐藏字段,originalsystemName因此我们知道systemname表单保存时是否匹配.
<input type='text' name='systemname'>
<input type='text' name='originalSystemName'>
<input type='text' name='status'><input type='submit' type='submit'>
Run Code Online (Sandbox Code Playgroud)
我想出了以下查询但是我收到了一个错误(请参阅下面的查询).
update SysHistory set
SystemName = (
select distinct t.systemname
from systemInfo_tmp t, SysHistory h
where t.systemname != t.originalSystemName
)
where systemname in (
select distinct t1.originalSystemName
from systemInfo_tmp t1, SysHistory h1
where t1.systemname != t1.originalSystemName
)
Run Code Online (Sandbox Code Playgroud)
我收到的错误:
子查询返回的值超过1.当子查询跟随=,!=,<,<=,>,> =或子查询用作表达式时,不允许这样做.
这可能是你的意思吗?虽然这是一个单行表,但似乎WHERE缺少一个条款.
UPDATE h
SET SystemName = t.systemname
FROM SysHistory AS h
INNER JOIN systemInfo_tmp AS t
ON h.systemname <> t.originalSystemName;
Run Code Online (Sandbox Code Playgroud)