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

重複を選択し、最も古いものを保持します(IDに基づかない)

    サンプルデータと結果に基づいて、GROUP BY あなたが求めている結果が得られます:

    SELECT
      domain,
      MIN(creationdate) AS creationdate,
      value1,
      value2
    FROM mytable
    GROUP BY domain, value1, value2
    

    補遺 :@Arkaは、value 1で更新されたサンプルデータを提供しました およびvalue 2 列の値は異なります(元の列は同じでした)。これにより、クエリが次のように変更されます:

    SELECT domain, creationdate, value1, value2
    FROM mytable
    WHERE (domain, creationdate) IN (
      SELECT domain, MIN(creationdate)
      FROM mytable
      GROUP BY domain)
    

    サブクエリは、最も早いcreationdateのリストを取得します domainごとに 、および外部クエリは、domainが存在する行のみを選択します およびcreationdate サブクエリ値と一致します。




    1. SQL更新は、更新の実行中にサブクエリに影響しますか?

    2. SQLServerのカーソルタイプ-静的カーソルのみを転送| SQLServerチュートリアル/TSQLチュートリアル

    3. Java Enums、JPA、Postgres enums-どうすればそれらを連携させることができますか?

    4. データベース管理のためのACIDモデルを理解する