выбрать и заменить значения из другой таблицы - PullRequest
0 голосов
/ 05 марта 2012

У меня есть две таблицы в 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. Первое вхождение NULL в a.valueA, которое я хочу заменить на b.valueB, где priority = 1, второе вхождение NULL в a.valueA, которое я хочу заменить на b.valueB, где priority = 2 и так далее.

Пожалуйста, ребята, вы не представляете, как решить этот выбор в MySQL?

Спасибо.

1 Ответ

0 голосов
/ 05 марта 2012

Это то, что вы хотите?:

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
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...