sql >> データベース >  >> RDS >> SQLite

SQLite Order By

    概要 :このチュートリアルでは、SQLite ORDER BYを使用してクエリの結果セットを並べ替える方法を学習します 条項。

    SQLite ORDER BYの紹介 条項

    SQLiteは、データを不特定の順序でテーブルに保存します。これは、テーブル内の行が挿入された順序である場合とそうでない場合があることを意味します。

    SELECTを使用する場合 テーブルからデータをクエリするステートメントの場合、結果セットの行の順序は指定されていません。

    結果セットを並べ替えるには、ORDER BYを追加します SELECTの句 次のようなステートメント:

    SELECT
       select_list
    FROM
       table
    ORDER BY
        column_1 ASC,
        column_2 DESC;Code language: SQL (Structured Query Language) (sql)

    ORDER BY 句はFROMの後にあります 句。 1つ以上の列に基づいて結果セットを昇順または降順で並べ替えることができます。

    この構文では、並べ替える列名をORDER BYの後に配置します。 句の後にASCが続く またはDESC キーワード。

    • ASC キーワードは昇順を意味します。
    • そしてDESC キーワードは降順を意味します。

    ASCを指定しない場合 またはDESC キーワード、SQLiteはASCを使用して結果セットをソートします オプション。つまり、デフォルトでは結果セットが昇順で並べ替えられます。

    結果セットを複数の列で並べ替える場合は、コンマ(、)を使用して2つの列を区切ります。 ORDER BY 句は、列または式を使用して行を左から右に並べ替えます。つまり、ORDER BY 句は、リストの最初の列を使用して行をソートします。次に、2番目の列を使用してソートされた行をソートし、以下同様に続きます。

    SELECTの選択リストに表示されない列を使用して結果セットを並べ替えることができます 条項。

    SQLite ORDER BY 条項の例

    tracksを見てみましょう デモンストレーション用のサンプルデータベースのテーブル。

    名前、ミリ秒、アルバムIDの列からデータを取得する場合は、次のステートメントを使用します。

    SELECT
    	name,
    	milliseconds, 
            albumid
    FROM
    	tracks;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    SELECT ORDER BYを使用しないステートメント 句は、順序が決まっていない結果セットを返します。

    AlbumIdに基づいて結果セットを並べ替えるとします。 列を昇順で使用するには、次のステートメントを使用します。

    SELECT
    	name,
    	milliseconds, 
    	albumid
    FROM
    	tracks
    ORDER BY
    	albumid ASC;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    結果セットは、AlbumIdで並べ替えられます。 スクリーンショットに示されている昇順の列。

    SQLiteはASCを使用します デフォルトでは、次のように上記のステートメントで省略できます。

    SELECT
    	name,
    	milliseconds, 
    	albumid
    FROM
    	tracks
    ORDER BY
    	albumid;

    試してみてください

    ソートされた結果を(AlbumIdで)ソートするとします。 )上記のMilliseconds 降順の列。この場合、Millisecondsを追加する必要があります ORDER BYへの列 次のような条項:

    SELECT
    	name,
    	milliseconds, 
    	albumid
    FROM
    	tracks
    ORDER BY
    	albumid ASC,
            milliseconds DESC;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    SQLiteはAlbumIdで行を並べ替えます 最初に昇順の列。次に、ソートされた結果セットをMillisecondsでソートします。 降順の列。

    AlbumIdでアルバムのトラックを見る場合 1、2つのステートメント間でトラックの順序が変わることがわかります。

    SQLite ORDER BY 列の位置で

    列の名前を指定する代わりに、ORDER BYで列の位置を使用できます 条項。

    たとえば、次のステートメントは、両方のalbumidでトラックを並べ替えます。 (3列目)およびMilliseconds (2列目)昇順。

    SELECT
    	name,
    	milliseconds, 
    	albumid
    FROM
    	tracks
    ORDER BY
    	 3,2;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    番号3と2は、AlbumIdを表します。 およびMilliseconds SELECTに表示される列リスト 条項。

    NULLの並べ替え

    データベースの世界では、NULLは特別です。情報が不足しているか、データが該当しないことを示します。

    アーティストの誕生日をテーブルに保存するとします。アーティストの記録を保存する時点では、誕生日情報はありません。

    データベース内の不明な誕生日情報を表すために、01.01.1900のような特別な日付を使用できます。 または'' 空の文字列。ただし、これらの値はどちらも、誕生日が不明であることを明確に示しているわけではありません。

    NULLは、この問題を解決するために考案されました。情報が欠落していることを示すために特別な値を使用する代わりに、NULLが使用されます。

    NULLは、別の値と比較できないため、特別です。簡単に言えば、2つの情報が不明な場合、それらを比較することはできません。

    NULLはそれ自体と比較することさえできません。 NULLはそれ自体と等しくないため、NULL = NULL 常にfalseになります。

    ソートに関しては、SQLiteはNULLを他のどの値よりも小さいと見なします。

    これは、ASCを使用する場合は結果セットの最初に、DESCを使用する場合は結果セットの最後にNULLが表示されることを意味します。

    SQLite3.30.0はNULLS FIRSTを追加しました およびNULLS LAST ORDER BYのオプション 句。 NULLS FIRST オプションは、NULLS LASTの間、結果セットの先頭にNULLが表示されることを指定します。 オプションは、結果セットの最後にNULLを配置します。

    次の例では、ORDER BYを使用しています 作曲家でトラックを並べ替える句:

    SELECT 
        TrackId, 
        Name, 
        Composer 
    FROM 
       tracks
    ORDER BY 
       Composer;Code language: SQL (Structured Query Language) (sql)

    まず、SQLiteがNULLを最小値として扱うため、結果セットの先頭にNULLが表示されることがわかります。結果を下にスクロールすると、他の値が表示されます:

    次の例では、NULLS LASTを使用しています 他の値の後にNULLを配置するオプション:

    SELECT 
        TrackId, 
        Name, 
        Composer 
    FROM 
        tracks
    ORDER BY 
        Composer NULLS LAST;Code language: SQL (Structured Query Language) (sql)

    出力を下にスクロールすると、結果セットの最後にNULLが配置されていることがわかります。

    このチュートリアルでは、SQLiteのORDER BYの使用方法を学びました。 単一の列、複数の列を昇順および降順で使用して結果セットを並べ替える句。


    1. プライマリインデックスの番号を付け直す方法

    2. PHPを使用して複数のMYSQLクエリを実行する

    3. PostgreSQLの権限とユーザー管理-知っておくべきこと

    4. pg-promiseで親と子のツリーを取得します