sql >> Databasteknik >  >> RDS >> Mysql

MySQL INSERT IF (anpassade if-satser)

INSERT INTO TABLE
SELECT value_for_column1, value_for_column2, ...
FROM wherever
WHERE your_special_condition

Om inga rader returneras från markeringen (eftersom ditt speciella villkor är falskt) sker ingen infogning.

Använda ditt schema från fråga (förutsatt ditt id kolumnen är auto_increment ):

insert into orders (product_id, qty)
select 2, 20
where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;

Detta kommer att infoga inga rader om det inte finns tillräckligt med lager till hands, annars skapas beställningsraden.

Bra idé btw!



  1. RR vs YY i Oracle

  2. Hur man jämför två arrayer och väljer bara de icke-matchande elementen i postgres

  3. lokala samlingstyper är inte tillåtna i SQL-satser

  4. SQL:ta bort all data från alla tillgängliga tabeller