在mysql中,可以使用where-in对多个用户进行更新,例如:
$users = ['user1', 'user2', 'user3'];
$amount = 25;
$users = implode(", ",array_keys($users));
"UPDATE balances SET balance = (balance + $amount) WHERE obj_id IN ($users)"
问题是:在查询之前,是否可以在不使用foreach循环的情况下进行类似于下面的示例的where-in插入?
"INSERT INTO balances ('balance', 'user_id') VALUES (($amount), user_id) WHERE user_id IN ($users)"
1条答案
按热度按时间bkhjykvo1#
mysql不支持这一点,但是假设您使用的是php(您没有指定这一点,但是您的代码看起来像php),那么解决方法就相当简单了。
另外,请记住,insert into会创建新行,因此where不适用。它添加到底部,在检索行以对数据进行排序时,可以使用where和order by。
循环数组的每个值,对其进行迭代,然后每次迭代执行一个查询。
您的代码如下:
如果要将其限制为一个查询,可以执行以下操作: