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

不为空时更新字段

林弘文
2023-03-14
问题内容

我有一条更新语句,用于更新ID = xx的字段x,y和z。

在表中,我有几个不同的x_created_datetime字段(用于由不同人员维护/输入的记录的不同部分)。我想编写一个查询,如果为null则将更新此字段,但如果不为null则将其保留。

所以我有:

UPDATE newspapers
SET scan_notes = "data",
    scan_entered_by = "some_name",
    scan_modified_date = "current_unix_timestamp"
WHERE id = X

我需要的是一种添加以下内容的方法,但始终会更新上面的内容:

scan_created_date = "current_unix_timestamp"
where scan_created_date is null

我希望我可以在不进行第二次事务处理的情况下就可以做到这一点。关于如何做到这一点的任何想法?


问题答案:

做这个:

UPDATE newspapers
SET scan_notes = "data",    
  scan_entered_by = "some_name",    
  scan_modified_date = "current_unix_timestamp",
  scan_created_date = COALESCE(scan_created_date, "current_unix_timestamp")
WHERE id = X

COALESCE函数选择第一个非空值。在这种情况下,它将把datestamp
scan_created_date更新为相同的值(如果存在),否则将使用您替换"current_unix_timestamp"的所有内容。



 类似资料:
  • 我有一个表,有多条记录具有相同的ID但不同的值。我想从其他表复制记录到这个表。如果记录为空,我想更新到最小位置,或者如果值不存在,插入到下一个位置。 这是我的目标表: ID|职位|价值 1 | 1 | A 2 | 1 | B 2 | 2 |空 2 | 3 |空 2 | 4 | C 3 | 1 | A 4 | 1 | D 4 | 2 | B 源表: ID |值 1 | C 2|N 3 | B 4 |

  • 与其他包管理器(如)相比,我发现当更新与给定项目相关的包时,有一种奇怪的行为。 还根据留档,和选项 根据composer.json将依赖项升级到最新版本,并更新composer.lock文件。 事实上,正确地更新了新的包版本号。但是没有被修改,并且列出了旧的版本过低的包。 为什么会发生这种情况?是我做错了什么,还是这就是应该怎么做的?如果是这样的话,为什么两个文件中的一个是最新的,而另一个不是最新

  • 问题内容: 我使用并且有以下内容; 验证说,但问题是该字段是 可选的 。因此,当用户将其留空时,也会显示相同的错误消息。 因此,我想做的是仅在字段不为空时验证。如果该字段为空,则跳过该字段的验证 问题答案: 我建议您不要使用,而是使用 主要原因是我们显示了要限制用户的一组值的消息,在此情况下,您的条件消息中显示了您不想限制的值。 因此,您想限制用户输入除空格和数字之外的其他任何内容,为此输入一个正

  • 问题内容: 我知道它可以通过使用SQL来工作 但是我不能这样,我不能在SQL中硬编码’EMPTY_CLOB()’。我使用了如下方式: 但这没有用。Clob并未更新为空字符串,但仍存储为先前值。 任何人都可以帮助我吗? 问题答案: 正如我在另一个问题中已经提到的:以我的经验,getClob()和setClob()无法正常工作。 使用来代替: 这样,您还可以在更新之前删除不必要的SELECT,这也将提

  • 我现在迷路了。

  • 我正在做一个数据密集的角度项目,在这个项目中,我有一个ng重复,其中许多值每秒更新一次。如果一个值为空,它现在会更新DOM以显示一个空值;这是正确的行为。 需要的解决方案 我想要的是一个过滤器或表达式,当新值为空或NULL时,它不会更新DOM中的值。我相信他们称之为“锁定数据”。 可能的解决方案 我用$watch找到了几个可能的解决方案,但我相信它们不适合ng重复,或者至少效率不高:angular