Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Perbarui dan Tingkatkan beberapa kolom pada duplikat

Karena kolom tidak dapat dibatalkan, Anda harus melewati 0 s bukannya null s untuk kolom yang tidak ingin Anda berikan nilai dalam INSERT pernyataan dan gunakan perbandingan dengan 0 bukannya 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)

Hasil:

harga stok1 stok1-C stok2 stok2-C
99 10 0 0 0
120 0 0 12 0

Kemudian lagi:

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)

Hasil:

harga stok1 stok1-C stok2 stok2-C
99 20 1 0 0
120 0 0 24 1

Kemudian:

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)

Hasil:

harga stok1 stok1-C stok2 stok2-C
99 20 1 0 0
120 0 0 24 1
150 55 0 56 0

Kemudian:

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)

Hasil:

harga stok1 stok1-C stok2 stok2-C
99 20 1 0 0
120 0 0 24 1
150 65 1 66 1

Lihat demo .




  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 menambahkan hari ke tanggal

  2. Seberapa sering saya harus menutup koneksi database?

  3. Menjalankan beberapa kueri SQL dalam satu pernyataan dengan PHP

  4. Magento:SQLSTATE[23000]:Pelanggaran batasan integritas:1062 Entri duplikat '10000001' untuk kunci 'UNQ_SALES_FLAT_ORDER_IN

  5. Praktik baik Pernyataan Disiapkan Berturut-turut