当前位置: 首页 > 面试题库 >

在一行SQL中更新两个不同的行

郤仰岳
2023-03-14
问题内容

假设我有一个名为example的表格,如下所示:

[abc] | [def]

--1 — | -qwerty-

--2 — | -asdf —

我想要做的是在一个SQL查询中更新两个列(仅使用一个UPDATE)。

UPDATE example SET def = 'foo' where abc = '1'

UPDATE example SET def = 'bar' where abc = '2'

以上是我要实现的内容,但是在一行sql中(使用MySQL)。我知道您可以这样做,UPDATE example SET def 'foo', SET def = 'bar'但是我不确定如何使用两个不同的where语句来做到这一点。


问题答案:

您可以UPDATE使用IFmysql支持 )或通过CASE使RDBMS更加友好来执行一个。

UPDATE  example
SET     def = IF(abc = 1, 'foo', 'bar')
WHERE   abc IN (1, 2) -- reason to make it more faster, doesn't go on all records

或者

UPDATE  example
SET     def = CASE WHEN abc = 1 THEN 'foo' ELSE 'bar' END
WHERE abc IN (1, 2) -- reason to make it more faster, doesn't go on all records


 类似资料:
  • 问题内容: 我有两个更新语句。他们两个都给出相同的输出。它们有何不同,哪种更好使用? 陈述1: 陈述2: 问题答案: 对于内部连接,差异只是语义上的差异。这两个查询应产生完全相同的查询计划和完全相同的结果。 但是,当您使用外部联接时,条件是否在子句或on子句上就很重要。 不同于 不仅在语义层面上。 虽然第一个查询将返回右连接的预期结果,但第二个查询实际上将返回内部连接的预期结果。 这是因为如果您在

  • 问题内容: 我有表SQLite数据库和列,,。行数不断变化(可能增加或减少)。如果我知道每一行的值和行数,是否可以执行一次SQL查询以根据ID更新所有具有不同值的和字段? 例如: SQL查询伪代码: 和是存储和字段的新值的数组。 如果,例如,和包含以下值: …然后查询后的数据库应如下所示: 这可能吗?我现在正在为每个查询更新一行,但是随着行数的增加,它将需要数百个查询。顺便说一下,我正在AIR中做

  • (相同的情况发生在4个不同的服务器上 - Windows服务器2019) 我有两个Python3脚本,每个运行在独立的Windows任务调度器任务下。 详细信息: 任务1运行脚本1-任务2运行脚本2(为这个问题泛化) 两个脚本对两个Windows任务计划程序任务使用相同的凭据 两个脚本对SQL服务器使用相同的凭据 两个脚本都更新同一SQL服务器数据库中的表(凭据对两个表具有相同的权限) 两个脚本都

  • 问题内容: 有这张桌子 和这个 我如何从表“项目”中选择所有行并显示字段“已删除”,即使在给定用户ID的情况下,即使“ MyList”中不存在itemID? 查询结果示例: 什么是查询,以便我可以得到该结果? 谢谢 问题答案: 我不确定这是否是最好的方法,但它会返回我一直在寻找的内容:

  • 问题内容: 我试图了解如何用不同的值更新多行,但我不明白。解决方案无处不在,但对我来说似乎很难理解。 例如,将三个更新更新为1个查询: 我读了一个例子,但我真的不明白如何进行查询。即: 如果在WHERE和IF条件中存在多个条件,我还不太清楚如何执行查询。 问题答案: 您可以这样操作: 我不了解您的日期格式。日期应使用本机日期和时间类型存储在数据库中。

  • 问题内容: 我有大约1000行的表。我必须将n个随机行的表中的column(“ X”)更新为’Y’。为此,我可以有以下查询 是否有另一种有效的方式来编写此查询。该表没有索引。请帮忙? 问题答案: 我将使用ROWID: 我使用ROWID的实际原因并不是为了提高效率(它仍然会进行全表扫描)-如果列不是唯一的,则您的SQL可能不会更新所需的行数。 只有1000行,您不必担心效率(也许有一亿行)。该表上没