23

商品テーブルを2つの列で並べ替えたい:prod_priceprod_name

SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;

ここでの並べ替えはどのように行われますか?私はそれが最初にprod_priceそして次にによって起こると思いますprod_name。また、上記のクエリはこれとどのように異なりますか。

SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_name;

私の製品表は次のとおりです。

CREATE TABLE Products
(
  prod_id    char(10)      NOT NULL ,
  vend_id    char(10)      NOT NULL ,
  prod_name  char(255)     NOT NULL ,
  prod_price decimal(8,2)  NOT NULL ,
  prod_desc  text          NULL 
);
4

5 に答える 5

37

の並べ替えはORDER BY、最初の列で行われ、次に指定されたステートメントの追加の各列で行われます。

たとえば、次のデータについて考えてみます。

Column1    Column2
=======    =======
1          Smith
2          Jones
1          Anderson
3          Andrews

クエリ

SELECT Column1, Column2 FROM thedata ORDER BY Column1, Column2

最初に、のすべての値で並べ替えますColumn1

次に、列を並べ替えて次のようにしますColumn2

Column1    Column2
=======    =======
1          Anderson
1          Smith
2          Jones
3          Andrews

つまり、データは最初にColumn1順番に並べ替えられ、次に各サブセット(値としてColumn1持つ行1)が2番目の列の順に並べ替えられます。

投稿した2つのステートメントの違いは、最初のステートメントの行が最初にprod_price(価格順、最低から最高)、次に名前の順序(つまり、2つのアイテムの価格が同じ場合、1つ)でソートされることです。名前のアルファ値が低い方が最初に表示されます)、2番目の値は名前順にのみ並べ替えられます(つまり、価格にprod_name関係なく、価格が順番に表示されます)。

于 2013-03-26T02:48:25.903 に答える
8

結果は、ORDER BY句に含まれる数の列について、最初の列、次に2番目の列の順に並べられます。結果を降順でソートする場合は、ORDER BY句で、関連する列の名前または番号の直後にDESCキーワードを使用する必要があります。

この例をチェックしてください

SELECT first_name, last_name, hire_date, salary 
FROM employee 
ORDER BY hire_date DESC,last_name ASC;

連続して注文します。最初にHire_Dateを注文し、次にHire_DateでLAST_NAMEを注文します。

于 2013-03-26T02:47:59.917 に答える
1

はい、並べ替えは異なります。

ORDER BYリスト内の項目は順番に適用されます。
後のアイテムは、前のステップで残ったピアのみを注文します。

試してみませんか?

于 2013-03-26T02:29:20.577 に答える
1

データベースのサイズによって異なります。

SQLはSET理論に基づいています。つまり、テーブルをクエリするときに本質的に使用される順序はありません。

したがって、最初のクエリを実行する場合、最初に製品価格で注文し、次に製品名で注文します。たとえば、価格カテゴリに重複がある場合、たとえば$ 20の場合、それらの重複を名前で注文するため、常に維持されます。クエリを実行すると、常に同じ結果のセットが同じ順序で返されます。

2番目のクエリを実行する場合、名前でのみ並べ替えられるため、同じ名前の製品が2つある場合(何らかの奇妙な理由で)、クエリを実行した後の順序は保証されません。

于 2013-03-26T02:43:09.803 に答える
1

はい、並べ替えの進行は異なります。最初のシナリオでは、column1に基づいて注文し、さらにそのプロセスに加えて、colmun2をcolumn1に基づいて並べ替えます..2番目のシナリオでは、完全に列1のみに基づいて注文します...簡単な例に進んでください...uは次のようになります早く..

于 2014-02-19T03:28:16.317 に答える