ホームページ  >  記事  >  データベース  >  MySQL で Postgresql の SELECT DISTINCT ON をレプリケートするにはどうすればよいですか?

MySQL で Postgresql の SELECT DISTINCT ON をレプリケートするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-08 16:59:021056ブラウズ

How to Replicate Postgresql's SELECT DISTINCT ON in MySQL?

Postgresql の SELECT DISTINCT ON を MySQL に変換する

Postgresql から MySQL に移行する場合、Postgresql の SELECT DISTINCT を利用してクエリを変換する必要が生じる場合があります。 MySQL への ON ステートメント

Postgresql の SELECT DISTINCT ON

Postgresql では、SELECT DISTINCT ON は、指定された列の一意の組み合わせに基づいて重複行を削除するために使用されます。一致する行をすべて削除し、異なる組み合わせごとに「最初の」行のみを保持します。

MySQL の GROUP BY 拡張

MySQL には、SELECT に正確に対応するものはありません。区別オン。代わりに、GROUP BY の拡張機能を採用し、GROUP BY 句で名前が指定されていない場合でも、非集計列を選択できるようにします。ただし、各グループからどの値を選択するかは予測できません。したがって、MySQL で GROUP BY を使用すると、同様の効果を達成できる可能性があります。

このクエリは、各 (col1、col2、col3) の組み合わせの「最初の」行を返しますが、その特定の順序は返されません。これらの行は不定です。

行の順序を維持しています

返される行の順序を指定するには、サブクエリを使用できます。

このアプローチは論理的であるように見えますが、MySQL には、col4 とcol5 の値を選択する裁量権があります。期待どおりの行順序を確保するには、より複雑なクエリが必要です。

結論

Postgresql の SELECT DISTINCT ON を MySQL に直接変換するものはありません。 GROUP BY とサブクエリを使用した回避策により、必要な機能が提供されます。ただし、結果の MySQL クエリは Postgresql のクエリよりも複雑になる可能性があります。

以上がMySQL で Postgresql の SELECT DISTINCT ON をレプリケートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。