Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL jeśli wiersz istnieje zaktualizuj w innym przypadku wstaw

To się nazywa Upsert . Składnia MySQL jest dość dziwna, ale możesz to zrobić, na przykład:

INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1)
ON DUPLICATE KEY UPDATE
  activityID = VALUES(activityID)

Działa to jednak tylko dla zduplikowanych PK (nie dla dowolnego pola), więc w tym przypadku zadziała tylko wtedy, gdy userID i eventID skomponuj PK i chcesz zmienić tylko activityID

W przeciwnym razie możesz wybrać trasę IF-ELSE, coś takiego:

DECLARE mycount INT;
SET mycount = (SELECT COUNT(*) FROM eventcounter WHERE userID=1 AND eventID=1);
IF mycount > 0 THEN
  UPDATE eventcounter SET activityID=1 WHERE userID=1 AND eventID=1;
ELSE
  INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1);
END IF;

Zastrzeżenie:całkowicie nieprzetestowany kod



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobierz dane konkretnego użytkownika w PHP

  2. Uzyskiwanie połączenia PHP PDO z mysql_connect()?

  3. Jak używać STRCMP() do porównywania 2 ciągów znaków w MySQL?

  4. mysqld:Nie można zmienić katalogu na dane. Serwer się nie uruchamia

  5. Anagramer słów z % sql