我想更新一個表以指示某些行是其他父項,因此我在該表中添加了「parentid」列。以下查詢查找所有的家長:通過自我加入更新
SELECT ca1.id, ca2.id
FROM contactassociations ca1
JOIN contactassociations ca2 ON (ca1.contactid = ca2.contactid)
where ca1.entitytable = 'EMPLOYER' AND
ca2.entitytable = 'CLIENT';
但是當我嘗試去適應這種語法做了更新,這是行不通的:
UPDATE contactassociations ca1
SET ca1.parentid = ca2.id
JOIN contactassociations ca2 ON (ca1.contactid = ca2.contactid)
WHERE ca1.entitytable = 'EMPLOYER' AND ca2.entitytable = 'CLIENT';
我得到:
Error starting at line 6 in command:
UPDATE contactassociations ca1
SET ca1.parentid = ca2.id
JOIN contactassociations ca2 ON (ca1.contactid = ca2.contactid)
WHERE ca1.entitytable = 'EMPLOYER' AND ca2.entitytable = 'CLIENT'
Error at Command Line:7 Column:28
Error report:
SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:
請注意,第7行第28列是「SET」行的結尾。
我從來沒有聽說過「MERGE」。謝謝。 – 2010-03-04 15:35:31
@Paul:在一個語句中它是'INSERT','UPDATE'和'DELETE'。 'SQL Server'也支持它(因爲'2008') – Quassnoi 2010-03-04 15:39:10
+1,合併是你的朋友 – DCookie 2010-03-04 16:17:30