【问题标题】:update query for multiple rows with different where condition?更新具有不同where条件的多行的查询?
【发布时间】:2012-08-28 21:10:35
【问题描述】:

如何在 sql 中编写更新查询以更新具有不同 where 条件的多行?例如,如果我想更改具有不同 id 的特定表的 100 行的名称?

update table set name = 'value1' where id=1,
             set name ='value2' where id=2;

但是像这样我不能写 100 个条目。 .有什么帮助吗?

【问题讨论】:

  • 对此有什么帮助吗?

标签: sql sql-update


【解决方案1】:

您可以使用这 100 个条目创建一个临时表,然后通过加入这个新表来更新该表,例如:

CREATE TABLE Temp(
    Id int NOT NULL,
    Name Varchar(50)
) ;


UPDATE YourTable t1
INNER JOIN Temp t2 ON t1.Id = t2.Id
SET t1.Name = t2.Name;

【讨论】:

  • 但有一个疑问。 .每次更改名称字段时,我都应该创建这个临时表。 .
  • @SSS,我不知道您为什么需要大量更改这些值,但如果需要,您可以从使用此数据库的应用程序中处理。这是我能想到的唯一解决这个问题的方法。但为什么会有这些变化?是否有针对此类更改的任何规则,我们可以考虑基于此类角色的解决方案?
  • 更新表集名称(case id 为 1,然后为 2,然后 value end where id in(1,2))。 .这可以使用,但在我的情况下这是不可能的,因为我有 100 个条目
  • @SSS,是的,您可以按照您链接的文章使用案例语句或链接中描述的 Where 技术从您的应用程序中建议的那样创建动态 php 查询,我建议的解决方案也是仍然适用并且具有更好的性能。
猜你喜欢
  • 1970-01-01
  • 2014-11-02
  • 2022-11-17
  • 2017-11-16
  • 1970-01-01
  • 2011-11-17
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
相关资源
最近更新 更多