首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在单个SQL查询中执行多个更新?

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

Stack Overflow用户
提问于 2008-09-02 15:22:57
回答 8查看 3.3K关注 0票数 8

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

代码语言:javascript
复制
UPDATE foo
SET flag=true
WHERE id=?

我还有一个PHP数组,它有一个ID列表。除了解析之外,还有什么最好的方法可以做到这一点,如下所示……

代码语言:javascript
复制
foreach($list as $item){  
    $querycondition = $querycondition . " OR " . $item;  
}

..。并在WHERE子句中使用输出?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-09-02 15:29:19

这将实现相同的事情,但可能不会产生太多的速度提高,但看起来更好。

代码语言:javascript
复制
mysql_query("UPDATE foo SET flag=true WHERE id IN (".implode(', ',$list).")");
票数 9
EN

Stack Overflow用户

发布于 2008-09-02 15:27:12

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

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

票数 5
EN

Stack Overflow用户

发布于 2008-09-02 15:30:53

Use IN语句。提供逗号分隔的键值列表。使用implode函数可以很容易地做到这一点。

代码语言:javascript
复制
UPDATE foo SET flag = true WHERE id IN (1, 2, 3, 4, 5, ...)

或者,您可以使用condition:

代码语言:javascript
复制
UPDATE foo SET flag = true WHERE flag = false

或者子查询:

代码语言:javascript
复制
UPDATE foo SET flag = true WHERE id IN (SELECT id FROM foo WHERE .....)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档