sql >> Base de Datos >  >> RDS >> Mysql

Filas de actualización de MySQL con doble unión a la izquierda, limitando la primera coincidencia

Hiciste la tarea bastante fácil con tu sqlfiddle así como tu intento de resolver el problema con la consulta Select.

Funciona de la manera que usted quiere, supongo, y todo lo que tengo que hacer es agregar una combinación izquierda más con la tabla de categorías (no sé por qué no pudo unirse a la categoría ya que funciona correctamente).

Asi que. He editado su consulta de selección de la siguiente manera:

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;

Obtendrá los resultados que desea con esta consulta.

Ahora, para actualizar Products tabla con el resultado de esta consulta, puede hacer lo siguiente:

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;

Haga clic aquí para ver la demostración funcional

¡Espero que ayude!