1

次のテーブルがあるとします。

|   ID   |   col1_fix   |   col2   |  col3   |   ref_ID  
    1        val1       val12     val13  
    2        val2       val22     val23        1
    3        val3       val32     val33      

どのステートメントを使用して出力する必要がありますか: (行 id=2 は ref_id = 1 であるため、その値を取得する代わりに行 id=1 から値を取得しますが、行 id=2 から col1_fix 値を保持したいので、この行は、行 ID = 1 から col2 と col3 の値のみを取得することになります)

|   ID   |   col1_fix   |   col2   |  col3   |     
    1        val1       val12     val13  
    2        val2       val12     val13        
    3        val3       val32     val33      

ビューを作成して、正しい方向かどうかわからない独自のテーブルに参加することを考えています)。

4

2 に答える 2

0
select curr.id,
       curr.col1_fix,
       case when other.id is null then curr.col2 else other.col2 end as col2,
       case when other.id is null then curr.col3 else other.col3 end as col3
from the_table as curr
left join the_table as other
          on other.id = curr.ref_id;

ref_idただし、値が別の行を指す値を持つ行を指している場合に何をすべきかを指定しなかったというジム・ギャリソンのコメントに同意しますref_id...

上記のクエリは、その状況に対処しようとはしていません。そのような再帰的な要件を処理する必要がある場合、基本的な再帰機能がいくつか欠けているため、MySql でそれを機能させるのに苦労するだろうというのが私の理解です。必要に応じて、私よりも賢い誰かが、これがまだ実行可能であることを示してくれると確信しています.

于 2015-06-14T05:46:47.773 に答える