web-dev-qa-db-ja.com

「descで注文」と逆の順序で?

ようこそ、

返されたデータを「order by desc」のソートで逆にすることは可能ですか?しかし、そのデータを逆の順序で欲しいのですが。

たとえば、値を持つテーブルを取得しました

ID
1
2
3
4

そして私はします

注文ID ASC LIMIT 3取得

1
2
3

IDで注文すると、DESC制限3が発生します

4
3
2

私はを頂きたい

3
2
1

だから私はASCで注文したいのですが、結果を逆にします。私は常にPHP側でarray_reverseを使用してこれを行っていましたが、今日私はあなたに尋ねたいと思います。

14
marc
SELECT * 
FROM (
  SELECT ... 
  FROM ... 
  ORDER BY ID ASC 
  LIMIT 3
) AS sq 
ORDER BY ID DESC

2つのステップで作業していると考えてください。最初に内部クエリを実行します。IDが最も低い3つのレコードを選択します。次に、外部クエリでそれらを降順に並べ替えます。

25
Mchl

サブクエリを使用して最初の3行をフェッチしてから、外部クエリでこれらの行の順序を逆にすることができます。

SELECT *
FROM
(
    SELECT *
    FROM yourtable
    ORDER BY ID
    LIMIT 3
) T1
ORDER BY ID DESC
5
Mark Byers

いいえ、あなたは間違っていません。実用的なデータ量に違いはありません。 Array_reverseは大丈夫です。
それはあなたがあまり心配しなければならないことではありません。読みやすさや他の主観的な理由で、好きなものを使ってください

4

あなたはサブクエリでこれを行うことができます:

SELECT * FROM
    (SELECT * FROM myTable ORDER BY idMyTable LIMIT 0, 3) AS r
ORDER BY r.idMyTable DESC

リソース:

2
Colin Hebert

外側のSELECTを使用して、順序を逆にすることができます。

SELECT *
FROM (
    SELECT …
    ORDER BY id ASC
    LIMIT 3
) sub
ORDER BY id DESC
0
Gumbo