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

MySQL 5.7.5+は、グループの最初の行を取得します

    ORDER BY 派生テーブルのサブクエリは、MySQL5.7では無視されます。

    https://dev.mysql.com/を参照してください。 doc / refman / 5.7 / en / defined-table-optimization.html

    外部クエリにはJOINとGROUPBYがあるため、ORDER BYを伝播する資格がないため、ORDERBYを無視します。

    このオプティマイザーの動作は、オプティマイザースイッチderived_mergeによって制御されます。 。無効にすることができます。

    デモ:

    mysql [localhost] {msandbox} (test) > select @@version;
    +-----------+
    | @@version |
    +-----------+
    | 5.7.21    |
    +-----------+
    
    mysql [localhost] {msandbox} (test) > SELECT     columnPrimaryKey,     column1,     column2,     column3 FROM     (SELECT         columnPrimaryKey,         column1,         column2,         column3     FROM testTable     ORDER BY column2 ) AS tbl GROUP BY column3;
    +------------------+----------------+---------+---------+
    | columnPrimaryKey | column1        | column2 | column3 |
    +------------------+----------------+---------+---------+
    |                1 | Some Name 8-4  |       4 |       8 |
    |                6 | Some Name 9-1  |       1 |       9 |
    |                8 | Some Name 10-2 |       2 |      10 |
    +------------------+----------------+---------+---------+
    
    mysql [localhost] {msandbox} (test) > set optimizer_switch = 'derived_merge=off';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql [localhost] {msandbox} (test) > SELECT     columnPrimaryKey,     column1,     column2,     column3 FROM     (SELECT         columnPrimaryKey,         column1,         column2,         column3     FROM testTable     ORDER BY column2 ) AS tbl GROUP BY column3;
    +------------------+----------------+---------+---------+
    | columnPrimaryKey | column1        | column2 | column3 |
    +------------------+----------------+---------+---------+
    |                5 | Some Name 8-1  |       1 |       8 |
    |                6 | Some Name 9-1  |       1 |       9 |
    |                8 | Some Name 10-2 |       2 |      10 |
    +------------------+----------------+---------+---------+
    



    1. SQLite-データベースをファイルにバックアップ

    2. PostgreSQLのクラウドバックアップオプション

    3. 日付から曜日を選択

    4. 不正なDateTime値'0000-00-0000:00:00'-Date_Sub()in Have