Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL - SELECIONE e ATUALIZE


Basta fazer o UPDATE quando você SELECT isso ao mesmo tempo.

Mude isso:
SELECT product_name, sku, qty 
FROM supplier_dropship_items 
WHERE supplier_id = '3' AND status = '2';

para isso:
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;

Isso pressupõe que você tenha uma coluna de ID dentro de sua tabela, pois é assim que ela deve ser configurada e como seria a aparência de qualquer tabela normalizada.

Editar


Aqui está um link para a documentação sobre esta sintaxe

Essencialmente, o que isso está fazendo é tentar atualizar a tabela que aqui estamos chamando de t , você executa simultaneamente uma instrução select.
Esta instrução select está retornando uma tabela de resultados que nós aliamos com o nome temp .
Agora imagine que o resultado da sua instrução select está dentro de temp , enquanto toda a tabela que você está atualizando está dentro de t .
Finalmente você atualiza o status campo para 1 onde o ID 's (nesses dois conjuntos de resultados de alias) correspondem