列を別のテーブルに結合しながら更新しようとしています。以下のクエリを使用しましたが、エラーが発生しました。
UPDATE TABLE_2
INNER JOIN
TABLE_1
ON (T2.ID=T1.ID)
SET TABLE_2.DEPT='HUMAN RESOURCE'
WHERE TABLE_2.DEPT='HR'
AND T1.COMPANY =1
誰でもこれについて私を助けることができますか?
ありがとう。
列を別のテーブルに結合しながら更新しようとしています。以下のクエリを使用しましたが、エラーが発生しました。
UPDATE TABLE_2
INNER JOIN
TABLE_1
ON (T2.ID=T1.ID)
SET TABLE_2.DEPT='HUMAN RESOURCE'
WHERE TABLE_2.DEPT='HR'
AND T1.COMPANY =1
誰でもこれについて私を助けることができますか?
ありがとう。
T2
1 つには、どこにも定義されていないテーブル エイリアス (T1
など) を使用しているため、問題が解決する可能性があります。そうでない場合、正しい構文は SQL フレーバーに大きく依存します。
たとえば、SQL Server の構文は次のとおりです。
UPDATE T2
SET T2.dept = 'HUMAN RESOURCE'
FROM Table2 T2
INNER JOIN Table1 T1
ON T1.[ID] = T2.[ID]
ここで参加する必要さえありませんが、必要なのは
UPDATE Table2 T2
SET T2.dept = 'HUMAN RESOURCE'
WHERE EXISTS(SELECT * FROM Table1 T1
ON T1.[ID] = T2.[ID])
MySQL では、構文は次のとおりです。
UPDATE FROM TABLE2 AS T2
INNER JOIN TABLE1 as T1
ON T2.id = T1.id
SET T2.Dept = 'Human Resources'
もちろん、このWHERE EXISTS
アプローチはMySQLでも機能します
UPDATE FROM Table2 AS T2
SET Dept="Human Resources"
WHERE EXISTS (SELECT * FROM Table1 T1
ON T1.[ID] = T2.[ID]);
MSSQLの場合、クエリは次のようになります。
UPDATE TABLE_2 SET DEPT='Human Resource'
FROM TABLE_1
WHERE TABLE_2.ID = TABLE_1.ID
AND TABLE_2.DEPT = 'HR'
AND TABLE_1.COMPANY = 1
UPDATE TABLE_2 SET DEPT='Human Resource'
FROM TABLE_1,Table2
WHERE TABLE_2.ID = TABLE_1.ID
AND TABLE_2.DEPT = 'HR'
AND TABLE_1.COMPANY = 1
結合でテーブルを更新すると、両方のテーブルをクローズから使用するため