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

SQLの並べ替えは、group byステートメントに従わず、常に主キーを使用します

    何が起こっているのかについての説明

    GROUP BYを実行しています staff.departmentに ただし、SELECT リストには、グループ化されていない2つの列staff.workerID, staff.nameが含まれています 。標準のSQLでは、これは構文エラーですが、MySqlでは許可されているため、クエリ作成者はそのような状況を自分で処理する必要があります。

    参照: http://dev.mysql.com /doc/refman/5.0/en/group-by-handling.html

    MySQL 5.1以降、sql_modeでONLY_FULL_GROUP_BYフラグを設定することにより、非標準機能を無効にできます。 http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_only_full_group_by

    修正方法

    select staff.workerID, staff.name, staff.department, staff.salary
    from staff
    join (
      select staff.department, max(staff.salary) AS biggest
      from staff
      group by staff.department
    ) t
    on t.department = staff.department and t.biggest = staff.salary
    

    内部クエリで、GROUPBYを使用して部門とその最高給与を取得します。次に、外部クエリで、これらの結果をメインテーブルと結合します。これにより、目的の結果が得られます。



    1. T-SQLの日時は、関数を使用して最も近い分と最も近い時間に丸められます

    2. PyPy、Django、PostgreSQLをどのように連携させるのですか?

    3. MySQLで結果セットをループする

    4. リモートデータベースに134675の値を挿入する最速の方法