我在mysql中有这两个表:
create table a (
id INT NOT NULL,
valueA INT
);
create table b (
id INT NOT NULL,
valueB INT,
priority INT
);
示例数据 - 表a:
1, 30 2, 35 3, NULL 4, 8 5, 50 6, NULL 7, 11 8, NULL
示例数据 - 表b:
1, 100, 1 2, 200, 2 3, 250, 3 4, 350, 4
我想要结果:
30 35 100 8 50 200 11 250
我想选择a.valueA。如果a.valueA是NULL值,我想用b.valueB替换它。 a.valueA中第一次出现NULL我想用b.valueB替换,其中priority = 1,a.valueA中第二次出现NULL我想用b.valueB替换,其中priority = 2,依此类推。
请大家,你不知道如何在mysql中解决这个选择吗?
感谢。
答案 0 :(得分:0)
SELECT a1.id,
COALESCE
( a1.valueA,
( SELECT b.valueB
FROM b
WHERE b.priority =
1 + ( SELECT COUNT(1)
FROM a AS a2
WHERE a2.id < a1.id
AND a2.valueA IS NULL
)
)
)
FROM a AS a1
ORDER BY a1.id
;