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

Câu lệnh mySQL có điều kiện. Nếu đúng CẬP NHẬT, nếu sai CHÈN

CẬP NHẬT: Lưu ý rằng bạn cần sử dụng IF EXISTS thay vì IS NULL như được chỉ ra trong câu trả lời ban đầu.

Mã để tạo thủ tục được lưu trữ để đóng gói tất cả logic và kiểm tra xem Hương vị có tồn tại hay không:

DELIMITER //

DROP PROCEDURE `GetFlavour`//
CREATE PROCEDURE `GetFlavour`(`FlavourID` INT, `FlavourName` VARCHAR(20))
BEGIN
IF EXISTS (SELECT * FROM Flavours WHERE ID = FlavourID) THEN
UPDATE Flavours SET ID = FlavourID;
ELSE
INSERT INTO Flavours (ID, Name) VALUES (FlavourID, FlavourName);
END IF;
END //

DELIMITER ;

NGUỒN GỐC:

Bạn có thể sử dụng mã này. Nó sẽ kiểm tra sự tồn tại của một bản ghi cụ thể và nếu tập bản ghi là NULL, thì nó sẽ chuyển qua và chèn bản ghi mới cho bạn.

IF (SELECT * FROM `TableName` WHERE `ID` = 2342 AND `Name` = 'abc') IS NULL THEN
INSERT INTO `TableName` (`ID`, `Name`) VALUES ('2342', 'abc');
ELSE UPDATE `TableName` SET `Name` = 'xyz' WHERE `ID` = '2342';
END IF;

Tôi hơi khó hiểu về cú pháp MySQL của mình, nhưng mã đó ít nhất sẽ giúp bạn thực hiện được hầu hết các bước ở đó, thay vì sử dụng BẬT KHÓA DUPLICATE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi MySQL Quá nhiều kết nối

  2. kết quả truy vấn tổng hợp mysql với GROUP BY

  3. Lỗi MySQL 1005?

  4. Khóa chính có được tự động lập chỉ mục trong MySQL không?

  5. Vấn đề hiệu suất và giải pháp mysql order by rand ()