sql >> データベース >  >> RDS >> Mysql

重複する複数の列を更新およびインクリメントする

    列はnull許容ではないため、0を渡す必要があります s nullの代わりに ■INSERTに値を指定したくない列の場合 ステートメントと0との比較を使用します 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)
    

    結果:

    price stock1 stock1-C stock2 stock2-C
    99 10 0 0 0
    120 0 0 12 0

    それからまた:

    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)
    

    結果:

    price stock1 stock1-C stock2 stock2-C
    99 20 1 0 0
    120 0 0 24 1

    次に:

    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)
    

    結果:

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

    次に:

    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)
    

    結果:

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

    デモ を参照してください。 。




    1. 一部のテーブルの名前をテーブル名 + DDMMYYYY に変更します

    2. 更新クエリのステートメントを準備するにはどうすればよいですか?

    3. PHPとMySQLを使用してドロップダウンにデータを入力する

    4. データベースはlaravelには存在しません