Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL nếu hàng tồn tại, hãy cập nhật khác chèn

Đó là cái được gọi là Upsert . Cú pháp MySQL khá lạ, nhưng bạn có thể làm được điều đó, chẳng hạn như:

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

Mặc dù vậy, nó chỉ hoạt động cho các PK trùng lặp (không phải cho bất kỳ trường nào bạn muốn), vì vậy trong trường hợp này, nó sẽ chỉ hoạt động nếu userIDeventID soạn PK và bạn chỉ muốn thay đổi activityID

Nếu không, bạn có thể đi theo tuyến IF-ELSE, giống như:

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;

Tuyên bố từ chối trách nhiệm:mã hoàn toàn chưa được kiểm tra



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql, chuyển đổi / xoay hàng thành cột, các lựa chọn biến

  2. pdo để truy xuất dữ liệu và điền một bản ghi

  3. Làm cách nào để chọn cột giá trị tĩnh?

  4. django auth Trường email người dùng cắt ngắn

  5. Laravel từ Raw DB đến Eloquent