将查询中的NULL值替换为另一行的值

时间:2017-05-12 14:36:43

标签: mysql sql join self-join

如何使用同一个表中另一行的值替换结果集中的所有null值? (如后备查询)

示例模式:

CREATE TABLE parent (
    id INTEGER NOT NULL AUTO_INCREMENT,
    int1 INTEGER,
    int2 INTEGER,
    int3 INTEGER,
    PRIMARY KEY (id)
)

查询:

SELECT * FROM table1
WHERE id = ?

但我需要将所有null值替换为另一行的值。我正在寻找这样的东西:

SELECT * FROM table1 WHERE id = ?
   REPLACE ALL NULL VALUES WITH (
       SELECT * FROM table1 WHERE id = ?
   )

示例:

id    int1    int2   int3
---------------------------
 1     1      null    1
 2     null   null    1
 3     1       4      0

当我首先查询id 1而id 3作为后退时,我希望结果为:

id    int1   int2   int3
---------------------------
 1     1      4      1

1 个答案:

答案 0 :(得分:0)

看看case

select case mycolumn is null
       when 1 then myothercolumn
       else mycolumn
       end
from mytable

您还可以将case - when嵌入到另一个中。这足以让您解决问题。