2012-03-04 9 views
0

から値を選択して交換する私はMySQLでこの2つのテーブルがあります。別のテーブル

create table a (
    id INT NOT NULL, 
    valueA INT 
); 

create table b (
    id INT NOT NULL, 
    valueB INT, 
    priority INT 
); 

例データ - 表:

 
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と置き換えたい。優先度= 1、a.valueAのNULLの2番目の出現箇所、優先度= 2のb.valueBなどに置き換えたい。

皆さん、どうぞこの選択をmysqlで解決する方法はありませんか?

ありがとうございました。

+0

現在のテーブルデータのいくつかの例と、データが役立つことが予想される結果が追加されている可能性があります。 –

+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 
; 
+0

はい、これは正しく動作しているようです!どうもありがとう!! –

+0

@PetrNovák:ようこそ! – ruakh