2016-11-21 49 views
-3

我有兩個表TBL_TEST1和TBL_TEST2在這兩個表中的列DISTRICT和NAME,有DISTRICT列中的兩個表中的數據都是相同的我想更新TBL_TEST2所有名稱列值爲'完成'在哪裏在在兩個表中找到的DISTRICT值爲'1'的TBL_TEST2表。SQL加入更新

下面

是我的查詢表

SELECT * FROM TBL_TEST1 

DISTRICT NAME 
1   Rashid 
2   Ramish 
1   Ali 
1   Karim 

而且

當我嘗試

UPDATE TBL_TEST2 SET TBL_TEST2.NAME = 'DONE' FROM TBL_TEST2 INNER JOIN TBL_TEST1 ON TBL_TEST2.DISTRICT = TBL_TEST1.DISTRICT WHERE TBL_TEST2.DISTRICT = '1' 

我收到以下錯誤味精

ORA-00933: SQL command not properly ended 

我測試它在其他崗位代碼,我要求不過我的代碼是正確的,爲什麼我仍然接收錯誤味精

+2

你用'mysql'標記了你的問題,但是錯誤信息表明你實際上使用'oracle',它使用不同的語法來更新連接。看到這個問題:https://stackoverflow.com/questions/2446764/update-statement-with-inner-join-on-oracle – jpw

+0

另一個SO問題可能有所幫助:http://stackoverflow.com/questions/8940471/sql -error-ora-00933-sql-command-not-ended- –

+0

我在其他帖子中測試代碼,我想知道我的代碼有什麼問題,但我仍然收到那個錯誤msg –

回答

3

你的加入是錯誤的(你正在使用從UPDATE) 這句法JOIN是不是ORACLE

UPDATE TBL_TEST2 
SET TBL_TEST2.NAME = 'DONE' 
FROM TBL_TEST2 
INNER JOIN TBL_TEST1 ON TBL_TEST2.DISTRICT = TBL_TEST1.DISTRICT 
WHERE TBL_TEST2.DISTRICT = '1'; 

在ORACLE用於更新連接表的一個簡單方法是基於使用該接合選擇作爲表

UPDATE ( 
    SELECT TBL_TEST2.NAME AS OLD_VALUE 
    FROM TBL_TEST2 
    INNER JOIN TBL_TEST1 ON TBL_TEST2.DISTRICT = TBL_TEST1.DISTRICT 
    WHERE TBL_TEST2.DISTRICT = '1') T 
    SET T.OLD_VALUE = 'DONE' ; 
+0

非常感謝親愛的 –

+0

@MelladQarizada如果我的回答是正確的,請將它標記爲已接受...看到這裏如何 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – scaisEdge

+0

感謝您的指導 –