2016-04-06 127 views
0

我有一個表 「表」連接記錄[SQL]

id_document , merge , merge_order ,name 

記錄與相同的合併,需要下 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。但是在有序的行下,使用相同的合併放置第二條記錄,並在其中merge_order = 2

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

你確定這個問題涉及mysql而不是oracle或其他rdbms產品嗎?我不知道在MySQL中使用連接的子句。 – 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不有條款連接。所以,我沒有考慮通過條款連接作爲有效的解決方案。

+0

downvote的任何理由? – Shadow