如何在单个SQL查询中执行多个更新?

Esa*_*Esa 7 php sql where

我有一个SQL查询,采用以下形式:

UPDATE foo
SET flag=true
WHERE id=?
Run Code Online (Sandbox Code Playgroud)

我还有一个PHP数组,其中包含一个ID列表.除了解析之外,实现此目的的最佳方法是什么,如下所示,......

foreach($list as $item){  
    $querycondition = $querycondition . " OR " . $item;  
}
Run Code Online (Sandbox Code Playgroud)

...并使用WHERE条款中的输出?

Chr*_*tow 9

这将实现同样的目标,但可能不会产生很大的速度提升,但看起来更好.

mysql_query("UPDATE foo SET flag=true WHERE id IN (".implode(', ',$list).")");
Run Code Online (Sandbox Code Playgroud)


mat*_*t b 5

您应该能够使用IN子句(假设您的数据库支持它):

UPDATE foo SET flag=true WHERE id in (1, 2, 3, 5, 6)


Mic*_*cki 5

使用IN语句.提供以逗号分隔的键值列表.您可以使用implode功能轻松完成.

UPDATE foo SET flag = true WHERE id IN (1, 2, 3, 4, 5, ...)
Run Code Online (Sandbox Code Playgroud)

或者你可以使用条件:

UPDATE foo SET flag = true WHERE flag = false
Run Code Online (Sandbox Code Playgroud)

或子查询:

UPDATE foo SET flag = true WHERE id IN (SELECT id FROM foo WHERE .....)
Run Code Online (Sandbox Code Playgroud)