Zadałem pytanie i otrzymałem odpowiedź, która pomogła.
UPDATE TABLE_A a JOIN TABLE_B b
ON a.join_col = b.join_col AND a.column_a = b.column_b
SET a.column_c = a.column_c + 1
Teraz chcę to zrobić, jeśli w grę wchodzą 3 stoły.
UPDATE tableC c JOIN tableB b JOIN tableA a
moje pytanie jest w gruncie rzeczy ... czy jest to możliwe, aby wykonać 3 łączenie tabeli na UPDATE
wyciągu? i jaka jest jego poprawna składnia? Dziękuję Ci. Czy robię ...
JOIN tableB, tableA
JOIN tableB JOIN tableA
JOIN
i jegoON
warunek, tak jak wSELECT
zapytaniu.UPDATE t1 JOIN t2 ON t1.id = t2.t1_id JOIN t3 ON t3.id = t2.t3_id SET t1.col = 'newval'
Odpowiedzi:
odpowiedź brzmi:
yes
możeszspróbuj tego w ten sposób
EDYTOWAĆ:
Aby dołączyć do ogólnej aktualizacji:
źródło
UPDATE table A JOIN table B ON {join data} JOIN table C ON {join data} JOIN {more join tables} SET A.column = {expression}
(wybacz mi, jeśli ten przeklęty redaktor nie pozwoli mi wchodzić na nowe linie bez robienia pełnego postu)WHERE
?? CzyWHERE
nie jest to możliwe?Alternatywnym sposobem osiągnięcia tego samego wyniku jest w ogóle nie używanie
JOIN
słowa kluczowego.źródło
UPDATE TABLE_A, TABLE_B SET TABLE_A.column_c = TABLE_A.column_c +1 WHERE TABLE_A.join_col = TABLE_B.join_col
JOIN
w ten sam sposób, coSELECT * FROM TABLE_A, TABLE_B ...
robiUPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition]
Później instrukcja stwierdza: „table_references
Klauzula zawiera listę tabel uczestniczących w złączeniu. Jej składnia jest opisana w rozdziale 13.2.9.2, Składnia JOIN .”Poniżej znajduje się zapytanie o aktualizację, które obejmuje
JOIN
&WHERE
oba. W ten sam sposób możemy użyć wielu klauzul Join / Where, Mam nadzieję, że to pomoże:źródło
Alternatywny plan ogólny, który dodaję tylko jako niezależną odpowiedź, ponieważ przeklęty „komentarz do odpowiedzi” nie przyjmuje nowych wierszy bez opublikowania całej edycji, nawet jeśli nie jest jeszcze ukończony.
Przykład:
źródło
Na przykład PostgreSQL:
źródło