2016-06-14 6 views
1

を並べ替える: idreplyTotextコメントはサブコメントでない場合replyToは、nullの場合もあります。グループの行と、私は、スキーマにコメントやsubcommentsを格納するためのMySQLのテーブルを持って、各グループ

は現在、私は次のクエリをしています:

私のためにコメントを与える
(select id as replyTo, text from Comments WHERE replyTo IS NULL) 
UNION 
(select replyTo,text from Comments WHERE replyTo IS NOT NULL) ORDER BY replyTo; 

1. comment 
2. subcomment 

私が持っているのであれば:

+----+---------+-----------+ 
| id | replyTo | text  | 
+----+---------+-----------+ 
| 1 | NULL | comment 1 | 
| 2 | NULL | comment 2 | 
| 3 |  1 | sub 1  | 
| 4 |  2 | sub 2  | 
+----+---------+-----------+ 

をこれが与えられます:

+---------+-----------+ 
| replyTo | text  | 
+---------+-----------+ 
|  1 | comment 1 | 
|  1 | sub 1  | 
|  2 | comment 2 | 
|  2 | sub 2  | 
+---------+-----------+ 

私の質問は、つまり、このように、私は逆の順序でそれらを得るのですか、である:彼らはreplyToことによって、グループ、言い換えれば

+-+------------+ 
|2|comment 2 | 
|2|sub 2  | 
|1|comment 1 | 
|1|sub 1  | 
+-+------------+ 

、私はreplyTo ASCによって要素をソートしたいと思います( mysqlのGROUP BYと同じではなく、属性に基づいてすべての重複行が削除されます)、グループをreplyTo DESCでソートします。

答えて

0

これを試してみてください:

select replyTo, text from 
(
select id as replyTo, text from Comments WHERE replyTo IS NULL 
UNION 
select replyTo,text from Comments WHERE replyTo IS NOT NULL ORDER BY replyTo 
) 
order by replyTo DESC; 
+0

を試してみては、魔法のように感謝をたくさん働いた:) –

+0

あなたは歓迎しています。 :) –

2

SELECT COALESCE(replyTo,id) AS replyTo, text 
FROM Comments 
ORDER BY COALESCE(replyTo,id) DESC, id 
関連する問題