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

SQLで重複する行を削除する方法

    問題:

    クエリの結果セットから重複する行を削除して、各行が1回だけ表示されるようにします。

    例:

    私たちのデータベースには、clothes 次の列にデータがあります:idnamecolor 、およびyear_produced

    id 名前 year_produced
    1 Tシャツ 黄色 2015
    2 ジャケット 2016
    3 ジーンズ 2015
    4 ジャケット 2015
    5 ジャケット 2016
    6 ジャケット 黄色 2017
    7 帽子 黄色 2017

    2017年以前に製造された、繰り返されない名前と色の服を入手しましょう。

    解決策:

    SELECT DISTINCT name,
      color
    FROM clothes
    WHERE year_produced < 2017;
    

    結果は次のとおりです。

    名前
    Tシャツ 黄色
    ジャケット
    ジーンズ
    ジャケット

    青いは、元のテーブルでは2回表示されますが、この結果セットでは1回だけ表示されることに注意してください。これは、名前と色の組み合わせが一意である行のみを選択するように指定したためです。

    ディスカッション:

    DISTINCTを使用するだけです SELECTの後のキーワード 繰り返されない行のみを選択する場合。このキーワードは、リストした列のみに基づいて、クエリに重複する行を強制的に破棄します。

    アイテムの名前が一意である行のみを選択する例を次に示します。

    SELECT DISTINCT name
    FROM clothes
    WHERE year_produced < 2017;
    

    前のクエリとは異なり、このクエリは3つのレコードのみを返します。

    name
    Tシャツ
    ジーンズ

    元のテーブルには4つのジーンズ(青2つ、緑1つ、黄色1つ)がありますが、DISTINCTのおかげで、この結果セットにはアイテムが1回だけ表示されます。 キーワード。


    1. MySQL、MySQLi、PDOの違いは何ですか?

    2. MySQL8.0でrootユーザーにすべての権限を付与する方法

    3. EXPLAINANALYZEを理解する方法

    4. scope_identity()を使用してネストされた一括挿入を実行する最速の方法は?