仅当字段为空时才更新来自 select 语句的查询

Posted

技术标签:

【中文标题】仅当字段为空时才更新来自 select 语句的查询【英文标题】:update query from select statement only update if the field is empty 【发布时间】:2014-06-25 00:35:55 【问题描述】:

我正在尝试编写一个 sql 语句来从另一个表列更新一个表的列。但我只想更新该列,如果它是空的。

例如:

UPDATE
    Table
SET
    Table.col1 = other_table.col1,
FROM
    Table
INNER JOIN
    other_table
ON
    Table.id = other_table.id

但我只想在 Table.col1 值为空时设置该值。最好的方法是什么?

【问题讨论】:

where Table.col1 is null ?取决于你的意思是空...... 【参考方案1】:

定义为空?

但实际上你只需要一个 WHERE 子句,例如

UPDATE Table
   SET Table.col1 = other_table.col1,
  FROM Table
       INNER JOIN
       other_table ON Table.id = other_table.id
 WHERE Table.col IS NULL  --or whatever your empty condition is

在 Postgre 中,您可能需要不同的语法 (How to do an update + join in PostgreSQL?):

UPDATE Table
   SET Table.col1 = other_table.col1,
  FROM Table
      ,other_table 
 WHERE Table.id = other_table.id
   AND Table.col IS NULL  --or whatever your empty condition is

【讨论】:

利用@KarlKieninger 的声明,空条目和空条目(即'')之间存在主要区别。 为什么会抛出“table name Table spcecified more than once -> here Table is my table name. @Null-Hypothesis 因为您在更新语句中进行了联接。这可以解决(但通常在 dbms 之间有所不同)。那么你的 dbms 是什么? @RaphaëlAlthaus 我正在使用 postgres 哦,在 postgre 中是不同的。您需要稍微更改连接语法,但您的 aander 仍然需要添加适当的 where 空条件。见***.com/questions/7869592/…

以上是关于仅当字段为空时才更新来自 select 语句的查询的主要内容,如果未能解决你的问题,请参考以下文章

仅当字段不为空时才进行电子邮件验证

SwiftUI:仅当输入不为空时才启用保存按钮

JPA:仅当结果集不为空时才缓存查询

MSSQL - 仅当所有值都不为空时才插入值

仅当特定输入为空时,如何禁用按钮?

仅当查询不为空时,才从查询写入 BigQuery 中的表