には影響しません「IN」:MySQLは次のように私は、mysqlのテーブルを持っている重複した値に
+----+---------+---------+-------+
| id | column1 | column2 | count |
+----+---------+---------+-------+
| 1 | 23 | 50 | 10 |
+----+---------+---------+-------+
し、クエリを次のように
UPDATE `count_table`
SET `count`=`count`-1
WHERE (`column1`, `column2`)
IN ((23,50),(23,50))
私はクエリを実行すると、私はの価値を期待'count'列は8になりますが、結果は9です。
期待どおりにクエリを実行できる代替クエリはありますか。
注:私は、カウントのような文を変更したくない=カウント2
をコードスニペットが
// this array is program generated ,it can hold max 300 values
$a=["(23,50)","(23,50)","(24,13)","(30,23)","(32,52)"];
$in_values = "(";
foreach ($a as $value)
{
$in_values .= $value . ",";
}
$in_values = substr($in_values, 0, -1) . ")";
$update_query = "UPDATE `count_table` SET `count`=`count`-1 WHERE (`column1`, `column2`) IN " . $in_values;
SQLは、手続き型言語ではありません。このステートメントを2回呼び出す必要があります。 – GurV
なぜ 'set' count' = 'count'-2'だけではないのですか? –
IN問合せに他の列ペアが2つ減ることを避けるため、 – Onx