2017-09-26 78 views
0

我希望用更新表,但需要使用另一個表以獲得正確的字段的表。新信息不會從另一個表的另一個字段中獲取。更新使用加入

下面的SQL語句返回正確的信息:

SELECT PURCHASEHEADER.ORDERNOTES 
FROM PURCHASEHEADER, ASSEMBLYLINESOURCE 
WHERE ASSEMBLYLINESOURCE.HEADERSYSUNIQUEID = 72637001 
    AND PURCHASEHEADER.ORDERNUMBER = ASSEMBLYLINESOURCE.PURCHASEORDERNUMBER 

我曾嘗試以下:

UPDATE PURCHASEHEADER SET PURCHASEHEADER.ORDERNOTES = 'Updated' 
WHERE EXISTS (
    SELECT 1 FROM ASSEMBLYLINESOURCE 
    WHERE PURCHASEHEADER.ORDERNUMBER = ASSEMBLYLINESOURCE.PURCHASEORDERNUMBER 
) AND ASSEMBLYLINESOURCE.HEADERSYSUNIQUEID = 72637001 

返回一個錯誤說: 「......列未知ASSEMBLYLINESOURCE.HEADERSYSUNIQUEID ...」但它確實存在,因爲它在第一個查詢中起作用。日

我見過馬克Rotteveel類似職位2017年7月,但仍無法得到它的工作。

+0

你似乎沒有格式化你的源代碼。爲什麼?我只花了15秒,使源代碼的可讀性和代表結構 - 並沒有實在躲不過現在您UPDATE命令已經倒內而外的結構,從外面那裏和引用從內只能在外面的表裏面引用表? –

回答

1

沒有您的右括號的問題。試試這個,它爲我工作。

UPDATE PURCHASEHEADER set PURCHASEHEADER.ORDERNOTES = 'Updated' 
WHERE EXISTS (SELECT 1 FROM ASSEMBLYLINESOURCE WHERE  
PURCHASEHEADER.ORDERNUMBER = ASSEMBLYLINESOURCE.PURCHASEORDERNUMBER AND 
ASSEMBLYLINESOURCE.HEADERSYSUNIQUEID = 72637001) 
+0

Select 1部分是什麼意思? –

+0

@SimonKing select 1已經在你的問題的代碼中。在任何情況下,它意味着爲找到的每一行生成具有字面值「1」的列。 「存在」只是對一行或多行存在興趣,而不是它的價值。 –

+0

這是糾正並更新PURCHASEHEADER.ORDERNOTES列屬於返回的行。 – Saj