SELECT date,SUM(IF(country='us',1,0)) AS us from ( SELECT DATE,SUBSTRING_INDEX(SUBSTRING_INDEX(LOCATIONS, '#', 3), '#', -1) AS country FROM chatgptgkg ORDER BY DATE;) 这段mysql语句的错误在哪?怎么改?
时间: 2023-06-15 18:08:24 浏览: 47
mysql截取的字符串函数substring_index的用法
5星 · 资源好评率100%
这段 MySQL 语句存在两个问题:
1. `chatgptgkg` 应该是表名,但是在语句中没有指定表名。
2. 子查询中的 `ORDER BY` 无效,应该将 `ORDER BY` 移动到最外层的查询中。
下面是修改后的语句:
```
SELECT date, SUM(IF(country='us',1,0)) AS us
FROM (
SELECT DATE, SUBSTRING_INDEX(SUBSTRING_INDEX(locations, '#', 3), '#', -1) AS country
FROM chatgptgkg
) subquery
GROUP BY date
ORDER BY date;
```
修改后的语句中:
1. 表名 `chatgptgkg` 已经被正确指定。
2. `ORDER BY` 被移动到最外层的查询中,以正确排序查询结果。
此外,还将子查询命名为 `subquery` 以提高可读性。
阅读全文