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

Sử dụng câu lệnh IF trong MySQL để cập nhật hoặc chèn mà không cần Thủ tục lưu trữ?

MySQL có chức năng đặc biệt trong trường hợp này. Nó được gọi là INSERT...ON DUPLICATE KEY UPDATE . Những gì nó làm là nó cố gắng INSERT một bản ghi nhưng nếu nó đã tồn tại, nó sẽ chỉ UPDATE nó. '

Để chức năng này hoạt động, bạn cần có UNIQUE ràng buộc trên bàn. Dựa trên ví dụ của bạn, tôi có thể thấy rằng bạn đang kiểm tra hai cột về sự tồn tại của nó. Nếu bạn đã có PRIMARY KEY , bạn chỉ có thể thêm một UNIQUE ràng buộc trên cả hai cột.

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

Khi nó đã được thực thi, bây giờ bạn có thể sử dụng 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khi nào tôi nên sử dụng $ wpdb-> chuẩn bị, nếu có?

  2. Nhận hàng tối đa trong nhóm?

  3. PHP + MySQL:Sự khác biệt giữa truy vấn có bộ đệm và không có bộ đệm

  4. Trình điều khiển QMYSQL không được tải trên Windows

  5. MySQL:điền vào các trường trống bằng số 0 khi sử dụng GROUP BY