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

Cập nhật và tăng nhiều cột trên bản sao

Vì các cột không thể null nên bạn phải chuyển 0 s thay vì null s cho các cột mà bạn không muốn cung cấp giá trị trong INSERT các câu lệnh và sử dụng so sánh với 0 thay vì null :

INSERT INTO stock (price, stock1, stock2) VALUES
  ('99', '10', 0), 
  ('120', 0, '12')
ON DUPLICATE KEY UPDATE 
  `stock1-C` = `stock1-C` + (VALUES(stock1) <> 0 AND stock1 <> 0),
  stock1 = stock1 + VALUES(stock1), 
  `stock2-C` = `stock2-C` + (VALUES(stock2) <> 0 AND stock2 <> 0),
  stock2 = stock2 + VALUES(stock2)

Kết quả:

giá stock1 stock1-C stock2 stock2-C
99 10 0 0 0
120 0 0 12 0

Sau đó, một lần nữa:

INSERT INTO stock (price, stock1, stock2) VALUES
  ('99', '10', 0), 
  ('120', 0, '12')
ON DUPLICATE KEY UPDATE 
  `stock1-C` = `stock1-C` + (VALUES(stock1) <> 0 AND stock1 <> 0),
  stock1 = stock1 + VALUES(stock1), 
  `stock2-C` = `stock2-C` + (VALUES(stock2) <> 0 AND stock2 <> 0),
  stock2 = stock2 + VALUES(stock2)

Kết quả:

giá stock1 stock1-C stock2 stock2-C
99 20 1 0 0
120 0 0 24 1

Sau đó:

INSERT INTO stock (price, stock1, stock2) VALUES
  ('150', '55', 0), 
  ('150', 0, '56')
ON DUPLICATE KEY UPDATE 
  `stock1-C` = `stock1-C` + (VALUES(stock1) <> 0 AND stock1 <> 0),
  stock1 = stock1 + VALUES(stock1), 
  `stock2-C` = `stock2-C` + (VALUES(stock2) <> 0 AND stock2 <> 0),
  stock2 = stock2 + VALUES(stock2)

Kết quả:

giá stock1 stock1-C stock2 stock2-C
99 20 1 0 0
120 0 0 24 1
150 55 0 56 0

Sau đó:

INSERT INTO stock (price, stock1, stock2) VALUES
  ('150', '10', 0), 
  ('150', 0, '10')
ON DUPLICATE KEY UPDATE 
  `stock1-C` = `stock1-C` + (VALUES(stock1) <> 0 AND stock1 <> 0),
  stock1 = stock1 + VALUES(stock1), 
  `stock2-C` = `stock2-C` + (VALUES(stock2) <> 0 AND stock2 <> 0),
  stock2 = stock2 + VALUES(stock2)

Kết quả:

giá stock1 stock1-C stock2 stock2-C
99 20 1 0 0
120 0 0 24 1
150 65 1 66 1

Xem bản trình diễn .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hướng dẫn toàn diện về cách sử dụng MySQL

  2. Phép chia quan hệ trong mysql mà không có các hàm tổng hợp?

  3. Làm cách nào để thêm chỉ mục vào bảng MySQL?

  4. MySQL - Truy vấn CẬP NHẬT với câu lệnh SET phụ thuộc vào kết quả của câu lệnh SET trước đó

  5. 'TÙY CHỌN SQL_SELECT_LIMIT =DEFAULT'