仅在其不为空的情况下更新 [重复]

Posted

技术标签:

【中文标题】仅在其不为空的情况下更新 [重复]【英文标题】:Update only in case where its not null [duplicate] 【发布时间】:2017-02-05 02:31:38 【问题描述】:

我想使用从 table2 中选择更新 table1 中的列 (a),但仅在 table2 中现有列 (b) 不为空时进行更新。我不想使用 where 语句(不为空),因为它会影响我的所有代码。

我的代码示例:

update table1 set column(a) = (select column(b) from table2)

我正在尝试这样的事情

update table1 set column(a) = not null(select column(b) from table2)

例子:

update ExpressMarketCheck set Barcode = (select barcode from ExpressMarket), Name=(select name from expressmarket), price=(select price from expressmarket)

【问题讨论】:

“影响我所有的代码”是什么意思?为什么可以点头使用简单、标准的WHERE 子句? WHERE 子句有什么问题? 【参考方案1】:

您可以使用此查询来实现您的约束。

Update ExpressMarketCheck set Barcode = (select barcode from ExpressMarket where barcode IS NOT NULL)

【讨论】:

不相关子查询? 这正是他不想要的。 “我不想使用 where 语句(不为空)” 感谢您的信息。最初,当我发布答案时,该约束不存在。 没关系,我只需对我的代码稍作改动就可以了!谢谢!【参考方案2】:

mysql 有一个IFNULL 函数,所以你可以这样做:

UPDATE your_table_name
SET your_column_name= "data",
scan_created_date = ISNULL( your_column_name, "data" )
WHERE id = X

【讨论】:

在 SQL-Server 中你可以使用ISNULL() 感谢指点-:)【参考方案3】:

我想你想要一个join:

update emc
    set Barcode = em.barcode, 
        Name = em.name,
        price= em.price
     from ExpressMarketCheck emc join
          expressmarket em
          on emc.?? = em.??;

我无法从您的问题中得知join 应使用哪些列。 ?? 是占位符。

【讨论】:

以上是关于仅在其不为空的情况下更新 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

胡子渲染列表如果不为空[重复]

如果值不为空,如何仅在对象中添加字段? Javascript

Sql Server:如何仅在存在时才选择列?

如何仅在调试模式下显示小部件 [重复]

猫鼬只更新不为空的字段?

sql查询中有一列中有NULL的数据,如何判断不为空的时候才进行操作?