mysql group by 无效_Mysql5.7版本group by 子查询中order by 无效的问题解决办法
时间: 2023-07-30 12:11:58 浏览: 182
MySQL优化GROUP BY(松散索引扫描与紧凑索引扫描)
在 MySQL 5.7 版本中,如果在子查询中使用 `GROUP BY` 和 `ORDER BY`,可能会出现无效的情况。这是因为 MySQL 5.7 版本对于子查询中的 `GROUP BY` 和 `ORDER BY` 的处理方式与之前的版本不同,可能会导致查询结果不正确。
要解决这个问题,可以使用以下两种方法之一:
1. 使用临时表
将子查询的结果存储到临时表中,然后在主查询中对临时表进行 `GROUP BY` 和 `ORDER BY` 操作。
例如:
```
SELECT * FROM (
SELECT col1, col2, COUNT(*) AS cnt
FROM table1
GROUP BY col1, col2
) AS t
ORDER BY t.cnt DESC;
```
2. 使用派生表
将子查询的结果作为派生表,然后在主查询中对派生表进行 `GROUP BY` 和 `ORDER BY` 操作。
例如:
```
SELECT t.col1, t.col2, COUNT(*) AS cnt
FROM (
SELECT col1, col2
FROM table1
) AS t
GROUP BY t.col1, t.col2
ORDER BY cnt DESC;
```
这两种方法都可以避免在子查询中使用 `GROUP BY` 和 `ORDER BY` 导致的无效问题。但是,使用临时表或派生表可能会影响查询性能,需要根据实际情况选择合适的方法。
阅读全文