我在进行此查询时获得了帮助,但我需要查询仅影响不为空的单元格

我有这个问题


  我有一个名为“ person”的表,如下所示:

id  name    country father_id
52  bob     NULL    68
68  joe     Maui    72
53  mia     NULL    68
51  robbie  NULL    68

  
  我现在想直接在数据库中运行查询以全部更新
  与他们的祖父国家/地区同一个国家的person.id
  
  所以人员表将如下所示:

id  name    country father_id
52  bob     Maui    68
68  joe     Maui    72
53  mia     Maui    68
51  robbie  Maui    68

  
  所以我的问题是我如何根据person.id进行更新
  父亲的国家


我在下面得到了这个解决方案,但是如上所述,我需要更新以仅影响具有值的单元格,而不影响NULL单元格...

update person p join
       person father
       on p.father_id = father.id
    set p.country = father.country;

最佳答案

添加WHERE子句

UPDATE person AS p
       INNER JOIN person AS father
          ON p.father_id = father.id
  SET p.country = father.country
WHERE p.country IS NULL
      AND father.country IS NOT NULL

关于mysql - 仅当父值不为NULL时才基于父ID更新单元格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21419807/

10-11 17:07