sql >> Databasteknik >  >> RDS >> Mysql

MySQL - VÄLJ sedan UPPDATERA

Gör bara UPDATE när du SELECT det samtidigt.

Ändra detta:

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

till detta:

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;

Detta förutsätter att du har en ID-kolumn i din tabell eftersom det är så här den ska ställas in och hur en normaliserad tabell skulle se ut.

Redigera

Här är en länk till dokumentationen om denna syntax

Vad det här gör är när vi försöker uppdatera tabellen som vi här aliasar som t , kör du samtidigt en select-sats.
Denna select-sats returnerar en resultattabell som vi kallar namnet temp .
Så tänk dig nu att resultatet av din select-sats är inom temp , medan hela tabellen du uppdaterar är inuti t .
Äntligen uppdaterar du status fältet till 1 där ID s (på dessa två alias resultatuppsättningar) matchar



  1. Hantera mysql-omstart i SQLAlchemy

  2. Problem med RODBC sqlSave

  3. Hur man får det korta månadsnamnet från ett datum i MySQL

  4. MySql på radera kaskadkoncept?