2016-12-03 6 views
0

ように:MySQLでは、INSERT文脈でIFを使用できますか?

INSERT INTO `video_play_counts` 
    (`id`,`video_id`,`date`,`count`,`created`,`modified`) 
VALUES 
    ("",1,"2016-12-01",26,"2016-12-03 17:51:53","2016-12-03 17:51:53") 
ON DUPLICATE KEY UPDATE 
    `count` = GREATEST(`count`,VALUES(`count`)), 
    `modified` = IF(VALUES(`count`) > `count`,VALUES(`modified`),`modified`) 

だから、私はvideo_iddate上で一意のキーを持っていると私は、このユニークなキーでUPDATEを行うとき、新しいcount値が既存のものより大きくされている場合には、私が希望それに応じてmodifiedフィールドも更新します。 countフィールドは期待通りに更新されますが、modifiedフィールドはUPDATEの場合に新しい値を取得しません。

私はこれを使用して1つのクエリで複数の挿入/更新を行うことに注意してください。ちょうどこの例では1つの値セットしかありません。

私は間違っていますか?

答えて

1

私がテストしていませんが、私はあなたのクエリの最後の2行を切り替える必要があることをほぼ確信している、あなたが最初のVALUES(count)にmodifiedとセットcountを設定するように、他のカウントがGREATESTに設定されており、決して大きくないcount

+0

はい、それは動作します!私はそれを見る:)とてもありがとう! –

関連する問題