Próbuję zaktualizować tabela A danymi z tabeli B. Myślałem, że mogę zrobić coś takiego :Aktualizacja za pomocą dwóch tabel?
UPDATE A
SET A.name = B.name
WHERE A.id = B.id
ale niestety, to nie działa.
Ktoś ma pomysł, jak mogę to zrobić?
Próbuję zaktualizować tabela A danymi z tabeli B. Myślałem, że mogę zrobić coś takiego :Aktualizacja za pomocą dwóch tabel?
UPDATE A
SET A.name = B.name
WHERE A.id = B.id
ale niestety, to nie działa.
Ktoś ma pomysł, jak mogę to zrobić?
Twoje zapytanie nie działa, ponieważ nie masz klauzuli FROM, która określa tabele aliasing za pośrednictwem A/B.
Spróbuj za pomocą następujących: (! Proszę się nie śmiać)
UPDATE A
SET A.NAME = B.NAME
FROM TableNameA A, TableNameB B
WHERE A.ID = B.ID
Osobiście wolę używać bardziej wyraźne dołączyć składni dla jasności tzn
UPDATE A
SET A.NAME = B.NAME
FROM TableNameA A
INNER JOIN TableName B ON
A.ID = B.ID
dla programu Microsoft Access ...
UPDATE TableA A
INNER JOIN TableB B
ON A.ID = B.ID
SET A.Name = B.Name
Wybrana odpowiedź nie działa dla mnie na MariaDB. Ten się zrobił. Dzięki ! –
Drapałam się po głowie, nie mogąc uzyskać funkcji syntezy Johna Sansoma Join, przynajmniej w MySQL 5.5.30 InnoDB
.
Okazuje się, że to nie działa.
UPDATE A
SET A.x = 1
FROM A INNER JOIN B
ON A.name = B.name
WHERE A.x <> B.x
Ale to działa:
UPDATE A INNER JOIN B
ON A.name = B.name
SET A.x = 1
WHERE A.x <> B.x
Powyższy jest SQL-Server, a nie MySQL? – christiandev
Nie wiem, czy można mieć alias w klauzuli SET. Może zależeć od twojego smaku SQL, ale uważam, że skoro jest to dane, które aktualizujesz "A", to jest zabronione. –