WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   MySQL: if exist update else insert (https://www.wn.se/forum/showthread.php?t=1052050)

naak2803 2012-02-01 00:09

MySQL: if exist update else insert
 
Hejsan, behöver en SQL-sats som denna (MSSQL), fast för MySQL.
Denna SQL-sats verkar inte fungera för MySQL

Kod:

IF EXISTS (SELECT * FROM Table1 WHERE Column1='SomeValue')
    UPDATE Table1 SET (...) WHERE Column1='SomeValue'
ELSE
    INSERT INTO Table1 VALUES (...)

tack i förhand!

najk 2012-02-01 07:24

kika på INSERT ... ON DUPLICATE KEY UPDATE ...

Conny Westh 2012-02-02 01:05

Jag skulle gjort två helt olika SQL-satser, en update-sats och en Insert-sats:

Kod:

UPDATE Table1 SET (...)
WHERE PK IN (SELECT PK FROM Table2 WHERE Column1='SomeValue'))
AND Column1='SomeValue'

Kod:

INSERT INTO Table1 VALUES (...)
WHERE PK NOT IN (SELECT PK FROM Table2 WHERE Column1='SomeValue'))

Det är visserligen en liten fullösning men den är enkel att förstå och funkar... Kör updaten först och sen inserten.

thorsell 2012-02-02 09:26

Hej,

Är det kanske REPLACE INTO som du letar efter? Tänk på att den inte är lika snabb som UPDATE och INSERT är..

Mer info:
http://dev.mysql.com/doc/refman/5.0/en/replace.html
http://www.mysqltutorial.org/mysql-replace.aspx

pelmered 2012-02-04 20:28

Detta gör vad du efterfrågar och är den bästa och snyggaste lösningen. Den här queryn fungerar i MySQL, men inte i MSSQL tror jag.
Kod:

INSERT INTO Table1 (...) VALUES (...)  ON DUPLICATE KEY UPDATE (col1 = xxx, col2 = 'yyy',...)


Alla tider är GMT +2. Klockan är nu 16:46.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson