Solo haz UPDATE
cuando SELECT
al mismo tiempo.
Cambia esto:
SELECT product_name, sku, qty
FROM supplier_dropship_items
WHERE supplier_id = '3' AND status = '2';
a esto:
UPDATE supplier_dropship_items as t,
(
SELECT id, product_name, sku, qty
FROM supplier_dropship_items
WHERE supplier_id = '3' AND status = '2'
) as temp
SET status = '1' WHERE temp.ID = t.ID;
Esto supone que tiene una columna de ID dentro de su tabla, ya que así es como debe configurarse y cómo se vería cualquier tabla normalizada.
Editar
Aquí hay un enlace para la documentación sobre esta sintaxis
Esencialmente, lo que esto está haciendo es intentar actualizar la tabla que aquí estamos alias como t
, ejecuta simultáneamente una declaración de selección.
Esta declaración de selección devuelve una tabla de resultados a la que alias con el nombre temp
.
Así que ahora imagine que el resultado de su declaración de selección está dentro de temp
, mientras que toda la tabla que está actualizando está dentro de t
.
Finalmente actualizas el status
campo a 1
donde el ID
(en estos dos conjuntos de resultados de alias) coinciden