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

このSQLステートメントの書き方は?

    SELECT user.name, user.subject
    FROM user
    INNER JOIN (
        SELECT name, COUNT(1) AS occurrences
        FROM user
        GROUP BY name
      ) AS user_occurrences
      ON user.name = user_occurrences.name
    ORDER BY user_occurrences.occurrences DESC, user.name ASC, user.subject ASC
    LIMIT 4
    

    編集 使用しているRDBMSとデータセットのサイズによっては、これによりパフォーマンスが向上する場合があります。両方を試して比較してください。

    SELECT user.name, user.subject
    FROM user
    INNER JOIN user AS user_occurrences
      ON user.name = user_occurrences.name
    GROUP BY user.name --, user.subject Second GROUP BY not needed on MySQL, but it should logically be there
    ORDER BY COUNT(user_occurrences.subject) DESC, user.name ASC, user.subject ASC
    LIMIT 4
    


    1. 2つのテーブルのいくつかの条件に基づいて発生をカウントします

    2. 列のコピーをMySQLテーブルにすばやく追加する

    3. C#MySQLのDataReaderの2番目のDataReaderwhileループ

    4. DBに接続せずにmysql_real_escape_stringの代わりに