从另一个表中选择和替换值

时间:2012-03-04 21:40:41

标签: mysql replace

我在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中解决这个选择吗?

感谢。

1 个答案:

答案 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
;