0

我的查询有点进退两难。为了使我的代码达到最佳状态,我想在 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; This 完美无缺,但它并没有完成我所需要的。

当我再次发送相同的数组时,但是对于 key3, col5 行,我将数据更改为其他内容,我只希望 col6 将该键更新为 0;其余的应该保持 1。现在发生的情况是每一行都会得到更新,即使它是用完全相同的数据更新的。

所以,我需要的是,如果 col5 与当前保存的值不同,我只想更新 col6。我怎样才能做到这一点?

4

1 回答 1

4

使用中频

    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);
于 2011-02-17T12:07:52.980 回答