Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Aggiorna le righe con il doppio join sinistro, limitando la prima corrispondenza

Hai reso il compito abbastanza semplice con il tuo sqlfiddle e il tuo tentativo di risolvere il problema con Seleziona query.

Funziona come vuoi tu e tutto quello che devo fare è aggiungere un altro join sinistro con la tabella delle categorie (IDK perché non sei stato in grado di unirti a Category perché funziona correttamente).

Così. Ho modificato la query selezionata come segue:

select Products.name, Filters.*,Categories.id from Products
left join Filters
on Products.name LIKE CONCAT('%',Filters.filter,'%')
left join Categories
on Categories.name = Filters.category_name
GROUP BY Products.name;

Otterrai i risultati desiderati con questa query.

Ora, per aggiornare Products tabella con il risultato di questa query, puoi fare quanto segue:

update Products
left join Filters
on Products.name LIKE CONCAT('%',Filters.filter,'%')
left join Categories
on Categories.name = Filters.category_name
set Products.category_name = Filters.category_name, 
    Products.category_id = Categories.id;

Fai clic qui per la demo di lavoro

Spero che ti aiuti!