转化为mysql8的写法
时间: 2024-04-01 17:05:50 浏览: 49
MySQL中因一个双引号错位引发的血案详析
在MySQL 8中,您可以使用CTE(Common Table Expression)和窗口函数来实现相同的查询。以下是将查询转换为MySQL 8写法的示例:
```sql
WITH monthly_counts AS (
SELECT DATE_FORMAT(created, '%Y-%m') AS created_month, COUNT(*) AS c,
ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC, created_month DESC) AS rn
FROM t_post
GROUP BY created_month
)
SELECT created_month, c
FROM monthly_counts
ORDER BY rn;
```
在这个示例中,我们首先使用CTE定义一个名为"monthly_counts"的子查询,该子查询计算每个月的创建数量,并使用ROW_NUMBER()函数为每个月份生成一个排名。然后,我们在主查询中选择创建月份和数量,并按排名排序。
请注意,上述查询假设您的MySQL 8版本支持窗口函数。如果您的版本不支持窗口函数,将无法使用此写法。
阅读全文