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

MySQLGROUPBYを優先

    集計関数を使用して、各電子メールのより「関連性の高い」レコードを取得できます。
    このクエリで最良の結果が得られると思います:

    SELECT emailAddress, max(concat(fullName,',',address1,',',address2))
    FROM table
    GROUP BY emailAddress
    

    各電子メールアドレスの最も豊富な行が返されますが、すべてのデータは1つの文字列(コンマ区切り)内で返されるため、何らかの方法で解析する必要があります。
    パフォーマンスに問題がなく、通常の結果セットを別々のフィールドで取得したい場合は、次のいずれかを使用できます。

    SELECT table.emailAddress, fullName, address1, address2 
    FROM 
    table JOIN 
        (SELECT emailAddress, 
           max(concat(fullName,address1,address2)) as bestRowInOneString
        FROM table
        GROUP BY emailAddress
        ) bestRowsSubQuery 
     ON 
       concat(table.fullname,table.address1,table.address2) = bestRowsSubQuery.bestRowInOneString
       AND table.emailAddress = bestRowsSubQuery.emailAddress
    


    1. PostgreSQLのカスタムトリガーベースのアップグレード

    2. ユーザーがブラウザを閉じるときにmysqlテーブルから情報を削除する

    3. JavaからファイルDSNにアクセスする

    4. 選択クエリを作成するための10のMicrosoftAccessのヒント