MYSQL查询错误-第1部分运行正常-第2部分运行不正常

k4ymrczo  于 2023-06-28  发布在  Mysql
关注(0)|答案(1)|浏览(108)

该问题的指导是“生成以下两个结果集:
1.查询OCCUPATIONS中所有名称的字母顺序列表,紧接着每个职业的第一个字母作为括号(即:括在括号中)。例如:AnActorName(A)、ADoctorName(D)、AProfessorName(P)和ASingerName(S)。
1.在OCCUPATIONS中查询每个职业的发生次数。按升序对匹配项进行排序,并按以下格式输出:There are a total of [occupation_count] [occupation]s.其中[occupation_count]是职业在OCCUPATIONS中出现的次数,[occupation]是小写的职业名称。如果多个职业具有相同的[occupation_count],则应按字母顺序排列。
输入格式
OCCUPATIONS表描述如下

Occupation将仅包含以下值之一:医生、教授、歌手或演员
样本输出将为:

Christeen(P)
Jane(A)
Jenny(D)
Julia(A)
Ketty(P)
Maria(A)
Meera(S)
Priya(S)
Samantha(D)
There are a total of 2 doctors.
There are a total of 2 singers.
There are a total of 3 actors.
There are a total of 3 professors.

这是我代码的开头:

SELECT NAME, 
        CONCAT('(', LEFT(OCCUPATION,1),')')
FROM OCCUPATIONS
ORDER BY NAME, OCCUPATION DESC

SELECT CONCAT('There are a total of ' , COUNT(OCCUPATION), ' Doctors')
FROM OCCUPATIONS
WHERE OCCUPATION = 'Doctor'

如果我运行代码的第一部分,它运行得很好。但是如果我运行代码的第二部分,我会得到这个错误:
第1行出现错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在'SELECT CONCAT(' There are a total of ',COUNT(OCCUPATION),' Doctors ')附近使用的正确语法

esyap4oy

esyap4oy1#

对于MS SQL:

SELECT Name + '(' + LEFT(OCCUPATION,1) + ')' FROM OCCUPATIONS ORDER BY Name;
SELECT CONCAT('There are a total of ' , COUNT(OCCUPATION),' ',LOWER(OCCUPATION), 's.') FROM OCCUPATIONS 
GROUP BY OCCUPATION 
ORDER BY COUNT(OCCUPATION);

相关问题