Een SQL-query om een ​​tabelveld bij te werken van informatie uit twee andere tabellen

Ik heb drie tabellen: categorie, oud en nieuw.

Doel: om book_id van oud naar nieuw bij te werken

tabel categorie heeft een kolom: book_id

tabellen oud en nieuw hebben allebei kolommen: id en isbn

Wat ik wil bereiken:

  • neem de originele book_id uit de categorie
  • overeenkomen met originele book_id met id van oude
  • neem isbn van het resulterende record en vergelijk het met de isbn in nieuw
  • neem de id van het resulterende record en update book_id

MySQL uitvoeren.

1

2 antwoord

MySQL-syntaxis is een beetje anders dan SQL Server of Oracle ...

update category cat
inner join old on cat.book_id = old.id
inner join new on old.isbn = new.isbn
set cat.book_id = new.id
2
toegevoegd
Bedankt! Dat werkte wonderwel.
toegevoegd de auteur latca, de bron

Als u de categorie bijwerkt, zou dit het volgende moeten doen:

update cat 
set book_id = new.id
from category cat
join old on cat.book_id = old.id
join new on old.isbn = new.isbn
0
toegevoegd
Ik krijg een foutmelding: U heeft een fout in uw SQL-syntaxis nabij FROM
toegevoegd de auteur latca, de bron