sql >> Databáze >  >> RDS >> Mysql

Použití příkazu IF v MySQL k aktualizaci nebo vložení bez uložené procedury?

MySQL má v této situaci speciální funkce. Jmenuje se INSERT...ON DUPLICATE KEY UPDATE . Dělá to tak, že se pokouší INSERT záznam, ale pokud již existuje, bude pouze UPDATE to. '

Aby tato funkce fungovala, musíte mít UNIQUE omezení na stole. Na základě vašeho příkladu vidím, že kontrolujete existenci dvou sloupců. Pokud již máte PRIMARY KEY , stačí přidat UNIQUE omezení na oba sloupce.

ALTER TABLE oc_product_attribute 
      ADD CONSTRAINT tb_uq UNIQUE(PRODUCT_ID, ATTRIBUTE_ID)

Jakmile bude provedena, můžete nyní použít INSERT..ON DUPLICATE KEY UPDATE

INSERT INTO oc_product_attribute (PRODUCT_ID, ATTRIBUTE_ID, OtherCol, TEXT)
SELECT  MAX(PRODUCT_ID), MAX(ATTRIBUTE_ID), 1, 'XYZ'
FROM
        (
            SELECT  PRODUCT_ID, NULL ATTRIBUTE_ID 
            FROM    oc_product_description 
            WHERE   NAME = 'PRODUCT_NAME_HERE'
            UNION ALL
            SELECT  NULL PRODUCT_ID, ATTRIBUTE_ID 
            FROM    oc_attribute_description 
            WHERE   NAME='ATTRIBUTE_NAME_HERE'
        ) x
ON  DUPLICATE KEY UPDATE TEXT = 'ABC'

-- change OtherCol to the name of your column which you want to insert 1


  1. Oracle SQL GROUP BY není nápověda k výrazu GROUP BY

  2. Seskupit podle dne od časového razítka

  3. Jak mohu vytvořit fond připojení mysql pomocí nástroje asadmin na serveru GlassFish?

  4. jak zkontrolovat, zda řetězec vypadá náhodně nebo vytvořený člověkem a vyslovitelný?