sql >> Databasteknik >  >> RDS >> Mysql

MySQL-uppdateringsrader med dubbel vänsterkoppling, vilket begränsar första matchningen

Du gjorde uppgiften ganska enkel med din sqlfiddle samt ditt försök att lösa problemet med Select-fråga.

Det fungerar som du vill antar jag och allt jag behöver göra är att lägga till ytterligare en kvarvarande koppling med kategoritabell (IDK varför du inte kunde gå med i kategori eftersom den fungerar som den ska).

Så. Jag har redigerat din urvalsfråga enligt följande:

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;

Du får de resultat du vill ha med den här frågan.

Nu, för att uppdatera Products tabell med resultatet av den här frågan kan du göra följande:

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;

Klicka här för en fungerande demo

Hoppas det hjälper!




  1. Oracle NULLIF() funktion

  2. Hur framtvingar jag unikhet i en tabell?

  3. MySQL och CASE WHEN med en rad värden

  4. Hur hämtar man kategorier och underkategorier i en enda fråga i sql? (mysql)