我試過下面的陳述,它沒有起作用。查詢分析器返回一個「(0)行受影響」。好消息......它沒有炸燬......壞消息......我不知道這個聲明有什麼問題。通過從多個表格中提取信息更新表格
我想我正在使用SQL Server 2000.我還沒有嘗試過我的演示數據庫中的語句。第二種說法是將舊的oillab(oillabid = 4)更新爲新的oillab(oillabid = 9)。 oillabid映射到oillabstatusid的oillabstatus表中正在改變的oillabstatusid。
我想通過customerid更新oildatasetstatus表中的oildatasetstatusid。爲了獲得customerid,我需要從oildataset表中獲取oildatasetid(映射到oildatasetstatus表)和samplepointid。 samplepointid被映射到也包含customersiteid的採樣點表。 customersiteid映射到包含customerid的customersite表。更新完成後,我需要更新oildataset表中的oillabid。我猜這必須使用兩個語句來完成(如下所示)。這些陳述看起來是正確的還是有明顯的錯誤?無論如何要在一個聲明中執行這兩個更新?謝謝。
update oildatasetstatus set oildatasetstatusid =
case
WHEN oildatasetstatusid = 5 THEN 16
WHEN oildatasetstatusid = 6 THEN 17
WHEN oildatasetstatusid = 7 THEN 18
WHEN oildatasetstatusid = 8 THEN 18
WHEN oildatasetstatusid = 9 THEN 18
WHEN oildatasetstatusid = 10 THEN 19
WHEN oildatasetstatusid = 11 THEN 20
End
where oildatasetid in
(
select oildatasetstatusid from oildatasetstatus
inner join oildataset on oildataset.oildatasetid=oildatasetstatus.oildatasetid
where samplepoinid in
(
select samplepointid from samplepoint where customersiteid in
(
select customersiteid from customersite where customerid=2
)
)
)
update oildataset set oillabid=9 where oildatasetstatusid between 16 and 20
我建議清理的問題,格式化你的SQL,並提供了一些樣本數據,只是爲了讓問題更容易理解。 – achinda99 2009-02-18 14:30:55