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

SQLite Select Distinct

    概要 :このチュートリアルでは、SQLite SELECT DISTINCTの使用方法を学習します 結果セット内の重複する行を削除する句。

    SQLiteの概要SELECT DISTINCT 条項

    DISTINCT 句は、SELECTのオプションの句です。 声明。 DISTINCT 句を使用すると、結果セット内の重複する行を削除できます。

    次のステートメントは、DISTINCTの構文を示しています。 条項:

    SELECT DISTINCT	select_list
    FROM table;Code language: SQL (Structured Query Language) (sql)

    この構文では:

    • まず、DISTINCT 句は、SELECTの直後に表示する必要があります キーワード。
    • 次に、DISTINCTの後に列または列のリストを配置します キーワード。 1つの列を使用する場合、SQLiteはその列の値を使用して重複を評価します。複数の列を使用する場合、SQLiteはこれらの列の値の組み合わせを使用して重複を評価します。

    SQLiteはNULLを考慮します 重複としての値。 DISTINCTを使用する場合 NULLを持つ列を持つ句 値の場合、SQLiteはNULLの1行を保持します 値。

    データベース理論では、列にNULLが含まれている場合 値の場合、特定のレコードのその列に関する情報がないか、情報が適用されないことを意味します。

    たとえば、顧客がNULLの電話番号を持っている場合 値、つまり、顧客情報を記録する時点で顧客の電話番号に関する情報がないか、顧客が電話番号をまったく持っていない可能性があることを意味します。

    SQLite SELECT DISTINCT

    customersを使用します デモンストレーション用のサンプルデータベースのテーブル。

    顧客がいる都市を知りたい場合は、SELECTを使用できます。 cityからデータを取得するステートメント customersの列 次のような表:

    SELECT city
    FROM customers
    ORDER BY city;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    59行を返します。 Berlinなどの重複する行はほとんどありません London 、およびMountain View これらの重複する行を削除するには、DISTINCTを使用します 次のような条項:

    SELECT DISTINCT city
    FROM customers
    ORDER BY city;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    DISTINCTであるため、53行が返されます。 句は6つの重複する行を削除しました。

    SQLite SELECT DISTINCT 複数の列に

    次のステートメントは、すべての顧客の都市と国を検索します。

    SELECT
    	city,
    	country
    FROM
    	customers
    ORDER BY
    	country;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    結果セットには、上のスクリーンショットに示すように、重複する都市と国が含まれています。たとえば、ブラジルのサンパウロです。

    都市と国の重複を削除するには、DISTINCTを適用します 次のクエリに示すように、都市と国の両方の列に句を追加します。

    SELECT  DISTINCT
    	city,
    	country
    FROM
    	customers
    ORDER BY
    	country;Code language: SQL (Structured Query Language) (sql)

    部分的な出力は次のとおりです。

    前述のように、SQLiteは都市と国の組み合わせを使用して重複を評価します。

    SQLite SELECT DISTINCT NULLを使用 例

    このステートメントは、customersから顧客の会社の名前を返します テーブル。

    SELECT company
    FROM customers;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    多くのNULLを含む59行を返します 値。

    ここで、DISTINCTを適用すると ステートメントの句では、NULLを含む1行のみが保持されます 値。

    次のステートメントを参照してください:

    SELECT DISTINCT company
    FROM customers;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    このステートメントは、1つのNULLで11行を返します 値。

    テーブルから列のリストを選択し、いくつかの列の一意の組み合わせを取得する場合は、GROUP BYを使用できることに注意してください。 条項。

    このチュートリアルでは、SQLite SELECT DISTINCTを使用して結果セットから重複行を削除する方法を学習しました。 条項。


    1. PostgreSQLでテーブルのリスト列名とデータ型を取得するにはどうすればよいですか?

    2. データからjsonb配列とオブジェクトの配列を返すにはどうすればよいですか?

    3. 外部キー、ブロック、および更新の競合

    4. IntegrityErrorの原因となる行を無視するDjangobulk_create?