2014-02-21 42 views
0

我之前沒有使用UPDATE,我試圖根據多個表的查詢來更新表。我正在嘗試將servicetype.servicetype_id從1更改爲74571,以查詢返回的服務。當我執行下面的查詢時,出現「The-multipart identifier」service_1.service_id「無法綁定」的錯誤,並且查詢中服務表的所有實例都變爲service_1。基於查詢的更新表

UPDATE service 
SET service.service_id = 74571 
FROM accountservice INNER JOIN 
    serviceclass ON accountservice.serviceclass_id = serviceclass.serviceclass_id INNER JOIN 
    service ON accountservice.service_id = service.service_id INNER JOIN 
    servicetype ON service.servicetype_id = servicetype.servicetype_id 
WHERE  (servicetype.servicetype_id = 1) AND (serviceclass.serviceclass_id = 74561) AND (accountservice.fromdate <= '2013-11-15') AND (accountservice.todate IS NULL) 

回答

0

未經測試,但這應該會有訣竅。

UPDATE s SET s.service_id = 74571 FROM 
FROM   accountservice INNER JOIN 
        serviceclass ON accountservice.serviceclass_id = serviceclass.serviceclass_id INNER JOIN 
        service s ON accountservice.service_id = service.service_id INNER JOIN 
        servicetype ON service.servicetype_id = servicetype.servicetype_id 
WHERE  (servicetype.servicetype_id = 1) AND (serviceclass.serviceclass_id = 74561) AND (accountservice.fromdate <= '2013-11-15') AND (accountservice.todate IS NULL) 
1

您可以指定一個加入像這樣要更新的表:

UPDATE service 
SET service.service_id = 74571 
FROM accountservice INNER JOIN 
     serviceclass ON accountservice.serviceclass_id = serviceclass.serviceclass_id INNER JOIN 
     service ON accountservice.service_id = service.service_id INNER JOIN 
     servicetype ON service.servicetype_id = servicetype.servicetype_id 
WHERE ... 

小心這個!在將其更改爲UPDATE之前,您應該確認SELECT的結果。

這裏是對類似問題的解答... How do I UPDATE from a SELECT in SQL Server?

+0

我收到一條錯誤消息。它說:「多部分標識符」service_1.service_id「無法綁定,它在執行時將整個查詢中的服務更改爲service_1。 – Stedman

+0

@Stedman您是否可以使用UPDATE查詢更新您的問題?您可能只需要如果表已被別名('service AS service_1'),則嘗試'UPDATE service_1 ... ...'。 – Manny