sql >> Database >  >> RDS >> Mysql

MySQL - SELECTEREN en dan BIJWERKEN

Doe gewoon de UPDATE wanneer je SELECT het tegelijkertijd.

Wijzig dit:

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

naar dit:

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;

Dit veronderstelt dat je een ID-kolom in je tabel hebt, aangezien dit is hoe het moet worden ingesteld en hoe een genormaliseerde tabel eruit zou zien.

Bewerken

Hier is een link voor de documentatie over deze syntaxis

Wat dit in wezen doet, is terwijl we proberen de tabel bij te werken die we hier een alias gebruiken als t , voert u tegelijkertijd een select-statement uit.
Deze select-instructie retourneert een resultatentabel die we een alias noemen met de naam temp .
Stel je nu voor dat het resultaat van je select-statement in temp . zit , terwijl de hele tabel die u bijwerkt zich in t bevindt .
Eindelijk update je de status veld naar 1 waar de ID 's (op deze twee alias resultatensets) komen overeen



  1. MySQLdb Python voegt %d en %s in

  2. Oracle DROP TABLE INDIEN BESTAAT Alternatieven

  3. Splits één kolomwaarde in meerdere kolomwaarden

  4. Bent u gesorteerd? Tips met betrekking tot het bestellen van T-SQL-vensters