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

PostgreSQLSELECTステートメントの重複行を削除します

    PostgreSQLは現在、あいまいなGROUP BYを許可していません 結果がテーブルがスキャンされる順序、使用される計画などに依存するステートメント。これは、標準ではAFAIKで機能する必要があると述べていますが、一部のデータベース(5.7より前のMySQLバージョンなど)では、最初の値を選択するだけの緩いクエリが許可されますSELECTに表示される要素で検出されました リストしますが、GROUP BYにはありません 。

    PostgreSQLでは、 DISTINCT ON この種のクエリの場合。

    次のようなものを書きたい:

    SELECT DISTINCT ON (anwendung.name) anwendung.name, autor.entwickler
    FROM author 
    left join anwendung on anwendung.name = autor.anwendung;
    

    (フォローアップコメントに基づいて構文が修正されました)

    これは、MySQL5.7のANY_VALUE(...)に少し似ています。 group byの疑似関数 、ただし逆に、distinct onの値は 句は一意である必要があり、列には任意の値を使用できます 指定されています。

    ORDER BYがない限り 、どの値が選択されるかについての保証はありません。通常、ORDER BYが必要です 予測可能性のために。

    min()のような集計を使用することにも注意してください。 またはmax() 動作します。これは真実ですが、DISTINCT ONを使用する場合とは異なり、信頼性が高く予測可能な結果が得られます。 またはあいまいなGROUP BY -追加の並べ替えや集計が必要なため、パフォーマンスコストがかかり、順序データ型でのみ機能します。



    1. データベースレベルでmysqlのvarchar列を日付に変換します

    2. SQL Serverなしで.mdfデータベースにアクセスすることは可能ですか?

    3. ProxySQL2.0の新機能

    4. SQL Server(T-SQL)で列のサイズを変更する方法