ORDER BY
của bạn trong truy vấn con bảng dẫn xuất bị bỏ qua trong MySQL 5.7.
Xem https://dev.mysql.com/ doc / refman / 5.7 / en / origin-table -mize.html
Truy vấn bên ngoài của bạn có THAM GIA và NHÓM BẰNG, vì vậy nó không đủ điều kiện để phổ biến LỆNH BẰNG, do đó nó bỏ qua LỆNH BẰNG LỆNH.
Hành vi của trình tối ưu hóa này được kiểm soát bởi công tắc trình tối ưu hóa derived_merge
. Bạn có thể tắt nó.
Demo:
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 |
+------------------+----------------+---------+---------+