2017-09-12 6 views
1

psqlでjoinを使ってレコードをソートする方法は?コラム のいずれかでソートされたようないくつかのケースではpsqlでjoinを使ってレコードをソートする方法は?

はそうそう、それは ON 後に私たちのクエリをmachesした順序でソートするように思えます。どのようにその完了を確認していない。 特に右と左の結合を使用している間 単純に、レコードを表示する性質は何ですか?

+0

これはあなたが探しているものですか? https://www.w3schools.com/sql/sql_join.asp – kenfire

+0

@kenfire JOINクエリを使用している間、SQLのソート(レコードの表示順序)の性質について質問しています。 – robincEPtion

+2

要約すると、注文はありません。あなたの結果に注文*をしたい場合は、 'order by'句を追加する必要があります – joop

答えて

2

一般に、SQLテーブルのレコードには内部的な順序はありません。 Postgres documentationORDER BY上から:(選択リストが処理された後)クエリが出力テーブルを生成した

た後、それは、必要に応じて並べ替えることができます。 ソートが選択されていない場合、行は不特定の順番で返されます。この場合の実際の注文は、スキャンおよびジョイン・プランのタイプとディスク上の順序に依存しますが、それに頼らざるを得ません。特定の出力順序は、ソート・ステップが明示的に選択されている場合にのみ保証されます。

結果セットで特定の順序を使用する場合は、ORDER BYを使用する必要があります。たとえば、あなたが使用することができB二つのテーブルAに参加していた場合:

select 
    a.col, a.col2, b.col3 
from A a 
inner join B b 
    on a.col = b.col 
order by 
    a.col2  -- or replace with whatever column/logic you want to use 

あなたの現在のクエリにある順序があるように見えても、あなたはそれに頼るべきではありません。データを追加したり、列を追加したり、すべての作業を行うと、この「順序」が変更される可能性があります。

+0

ありがとうございます。これは私の質問にも私の答えですが、「内部秩序はありません」 - 公式文書でこれについての引用がありますか? – robincEPtion

+0

@robincEPtion更新された回答を確認してください。 –

+0

@robincEPtion:これはPostgresに固有のものではないことに注意してください。これは、すべてのリレーショナルデータベースシステムに当てはまります。 –

関連する問題