これは良い質問ですありがとう...メインIDによってオーダーし、文書名でグループを必要とします。しかし、それはそう、私は次のようにあなたのテーブル構造があると仮定します例えば、テーブルやコードを欠い:
CREATE TABLE `test` (
`id` int(10) UNSIGNED NOT NULL,
`name` varchar(255) NOT NULL
)
INSERT INTO `test` (`id`, `name`) VALUES
(199985, 'Clase Just Vet+Marzo Sol Supuestos 254 y 255 Parte...'),
(199984, 'Clase Just Vet+Marzo Jurisdiccion Voluntaria (20-...'),
(199983, 'Clase Just Vet+Marzo Sol Supuestos 254 y 255 Parte...'),
(198911, 'Clase Just Vet+Marzo Repaso Contencioso Administra...'),
(198910, 'Clase Just Vet+Marzo Repaso Contencioso Administra...');
私は少しトリッキーな要求された順序を見つけたので、私たちは、IDSが&を使用し、その後グループ化並べ替えを取得する必要がある最初の考えそれがあるサブクエリは、次のようにのように:あなたのあなたが1つの以上のRを返すサブクエリを使用することはできません知っているかもしれませんが
ids
199985,199983
199984
198911,198910
:結果を与える
SELECT GROUP_CONCAT(id) ids FROM `test` GROUP BY `name` ORDER BY `id` DESC
を私がグループ化できる上記の結果には類似点がないので、別の列を追加してグループ内で使用するように別の列を追加する必要があります。
結果のクエリ:
SELECT GROUP_CONCAT(`ids`) FROM(
SELECT GROUP_CONCAT(id) ids, 'x' as `useful_column`
FROM `test` GROUP BY `name` ORDER BY `id` DESC) `table`
これがうまく機能し、私たちは次のようにIDの結果を組み合わせて取得予想通り:あなたの質問に記載されたソート順序がある
199985,199983,199984,198911,198910
を。
SELECT * FROM `test` ORDER BY FIND_IN_SET(`id`,
(SELECT GROUP_CONCAT(`ids`) FROM(
SELECT GROUP_CONCAT(id) ids, 'x' as `useful_column` FROM `test`
GROUP BY `name` ORDER BY `id` DESC) `table`));
私はそれが面白い&を試してみたかったので、私はこの質問を通り抜けた覚えしてください:今、実際には次のようにあなただけを選択して、この結果を結合する必要が欲しいソート結果を取得しますこれを解決するためには、group_concatに制限があるため、このソリューションが利用できない可能性があります。& find_in_setの速さやその他の制限が実際にはわかりません。
試したSQLとサンプルテーブルを提供できますか? –