我的查询有点困难。为了使我的代码达到最优,我希望尽可能少地使用PHP中的逻辑,并让MySQL处理大部分内容。
所以这就是我所拥有的: 我有一个数组,例如10把钥匙。每个键都会保留一个新数组的某些值。每个值代表数据库表中的一行。
让我们说我的数据库表有6列。第一个是主要的自动增量。第2,3和4列应该是唯一的。第5列是TEXT表示,它不应该是唯一的。第6列是INT(1),其为0或1。
现在,当我将数据插入表格时,我使用INSERT INTO mytable (col2, col3, col4, col5, col6) VALUES ('$col2','$col3','$col4','$col5',1) ON DUPLICATE KEY UPDATE col5 = '$col5', col6 = 0;
这很完美,但它没有达到我的需要。
当我再次发送一个相同的数组时,但对于key3,col5行,我将数据更改为其他内容,我只希望col6将该键更新为0;其余的应该留1。 现在发生的是每行都会更新,即使它使用完全相同的数据更新。
所以,我需要的是如果col5与当前保存的值不同,我只想更新col6。 我怎么能这样做?
答案 0 :(得分:4)
使用 IF
INSERT INTO mytable (col2, col3, col4, col5, col6) VALUES
('$col2','$col3','$col4','$col5',1)
ON DUPLICATE KEY UPDATE col5 = '$col5', col6 = IF(col5 != '$col5', 0, col6);