2016-04-06 5 views
0

は、(一方のマージで)特定の順序接続レコード[SQL] Iは、テーブル "表" と同じマージと</p> <pre><code>id_document , merge , merge_order ,name </code></pre> <p>レコードを有する merge_order下によって必要

あります選択中
ID123456 , 400 , 1 , Coral 
ID654321 , 200 , 2 , Deril 
ID654322 , 400 , 2 , Rick 
ID654323 , 200 , 1 , Maggie 

出力は、たとえば、次のようになります。

ID654323 , 200 , 1 , Maggie 
ID654321 , 200 , 2 , Deril 
ID123456 , 400 , 1 , Coral 
ID654322 , 400 , 2 , Rick 

は、ここに私の選択

SELECT 
    MERGE_ORDER,ID_DOCUMENT,NAME,MERGE 
FROM(select * from Table order by name)-trying to order table before main select 
WHERE MERGE IS NOT NULL           
CONNECT BY NOCYCLE PRIOR MERGE = MERGE 
order SIBLINGS by MERGE_ORDER,NAME) 

選択した作品ですが、今私は(マージ)の名前で結果を注文しますが、レコードの接続を保存する必要があります。

私は行を注文する必要があります。merge_order = 1。しかし、整列された行の下では、同じマージで2番目のレコードを入れてください。ここではmerge_order = 2です。

ID654323 , 200 , 1 , Maggie 
ID123456 , 400 , 1 , Coral 
+1

この質問は、oracleやその他のrdbms製品ではなく、mysqlに関するものですか?私はmysqlでconnect by節が使用されていることに気づいていません。 – Shadow

+0

2,3または列名で注文するだけです – mohan111

答えて

0

私は、簡単な自己でこれを行うだろうが参加:

select t1.* 
from table t1 
inner join table t2 on t1.merge=t2.merge --self join 
where t2.merge_order=1 --relate the 1st of each merge to each record in the merge 
order by t2.name ASC, t1.merge_order ASC --the name in t2 will be the name from the 1st record, see where clause 

をあなたは同様で接続して、それを行うことができるかもしれません、しかし、あなたはあなたの製品のタグを更新していないとMySQLにはありませんconnect by節があります。だから、私はconnect by節を有効な解決策とは考えていません。

+0

downvoteの理由は何ですか? – Shadow

関連する問題

 関連する問題