我有一个需要更新的庞大表格。
以下表为例。我想使用patternid 1更新所有patternID 2。 但是,当我尝试使用子查询>我收到错误"子查询返回的值超过1"
使用查询
update Testtable
set triggertime = (select triggertime from testtable where patternid = 1 )
where patternid = 2
请帮忙
以下是测试表
PatternID triggertime ro_no
1 00:30 101
2 00:45 101
3 01:00 101
1 00:30 102
2 00:50 102
3 01:00 102
1 00:30 103
2 00:51 103
3 01:00 103
1 00:30 105
2 00:52 105
3 01:00 105
1 00:30 104
2 00:53 104
3 01:00 104
1 00:30 106
2 00:54 106
3 01:00 106
答案 0 :(得分:2)
正如它所说,有多个paternnid = 1
行。你想用哪一个?也许最大的一个?
试试这个:
update Testtable
set triggertime = (select max(triggertime) from testtable where patternid = 1 )
where patternid = 2
修改的
根据您的新说明:
update Testtable
set triggertime = (select max(innerTable.triggertime) from testtable innerTable where innertable.patternid = 1 and innerTable.ro_no = outerTable.ro_no )
from Testtable outerTable
where patternid = 2;
请参阅:
答案 1 :(得分:1)
以下是您正在寻找的查询:
UPDATE testtable
SET triggertime = (SELECT TOP 1 T2.triggertime
FROM testtable T2
WHERE T2.patternid = 1
AND T2.ro_no = T.ro_no
ORDER BY T2.triggertime DESC)
FROM testtable T
WHERE patternid = 2
希望这会有所帮助。