【问题标题】:SQL update from other table when value is NULL当值为 NULL 时从其他表更新 SQL
【发布时间】:2021-04-23 06:20:15
【问题描述】:

我有以下问题:有一个包含所有客户订单的“订单”表。然而,“emloyee_supervisor”列中有许多值(进行交易的员工的主管的 ID)NULL。相关信息存储在一个名为“主管”的列中,即员工本身的“员工”表中。现在我想更新 NULL(即从“员工”到“订单”的值)。我该怎么做?

员工的key是employee_id(在“employees”中用作key),订单的key是order_id。

我正在使用 DBvisualizer。

我不允许分享真实数据,但输入在概念上是这样的:

这是所需的输出(“员工”表当然没有改变)

【问题讨论】:

  • 您能否分享示例数据、所需的输出并说明您使用的是什么 RDBMS
  • OrdersEmployees 之间有什么关系。还有你使用的是哪个数据库 sql server、oracle 还是?
  • 用您正在使用的数据库标记您的问题。

标签: sql


【解决方案1】:

试试这个:

update o
set o.emloyee_supervisor = e.supervisor 
from orders o
inner join employees e on e.employee_id = o.employee_id
where o.emloyee_supervisor is null

【讨论】:

    【解决方案2】:

    试试下面的查询。

    update o
    set o.emloyee_supervisor = e.supervisor
    from orders o
    inner join employees e
        on e.employee_id = o.employee_id
    where o.emloyee_supervisor is null
    

    【讨论】:

      【解决方案3】:

      您的问题未使用您正在使用的数据库进行标记。应该适用于任何数据库的答案是:

      update orders
          set employee_supervisor = 
                  (select e.supervisor
                   from employees e 
                   where e.employee_id = orders.employee_id
                  )
      where orders.employee_supervisor is null;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-05
        • 1970-01-01
        • 1970-01-01
        • 2015-09-03
        • 2011-12-03
        • 1970-01-01
        相关资源
        最近更新 更多