Mysql 为什么';在这种情况下,你不能按工作顺序订购吗?
我想打印一些统计数据,因此我有以下代码:Mysql 为什么';在这种情况下,你不能按工作顺序订购吗?,mysql,sql,Mysql,Sql,我想打印一些统计数据,因此我有以下代码: (SELECT 'There are total', COUNT(Name), 'doctors.' FROM OCCUPATIONS WHERE Occupation = 'Doctor') UNION (SELECT 'There are total', COUNT(Name), 'singers.' FROM OCCUPATIONS WHERE Occupation = 'Singer') UNION (SELECT 'There are tota
(SELECT 'There are total', COUNT(Name), 'doctors.' FROM OCCUPATIONS
WHERE Occupation = 'Doctor')
UNION
(SELECT 'There are total', COUNT(Name), 'singers.' FROM OCCUPATIONS
WHERE Occupation = 'Singer')
UNION
(SELECT 'There are total', COUNT(Name), 'actors.' FROM OCCUPATIONS
WHERE Occupation = 'Actor')
UNION
(SELECT 'There are total', COUNT(Name), 'professors.' FROM OCCUPATIONS
WHERE Occupation = 'Professor')
ORDER BY COUNT(Occupation);
它统计每个职业的发生次数。我还需要根据出现的情况对这4行进行排序,这4行对应于每个职业。但是,我的代码似乎不起作用:
ERROR 1054 (42S22) at line 4: Unknown column 'Occupation' in 'order clause'
有什么问题以及如何修复?您需要别名
计数(Name
)并按顺序使用该别名:
(SELECT 'There are total', COUNT(Name) OccupationCount, 'doctors.' FROM OCCUPATIONS
WHERE Occupation = 'Doctor')
UNION
(SELECT 'There are total', COUNT(Name), 'singers.' FROM OCCUPATIONS
WHERE Occupation = 'Singer')
UNION
(SELECT 'There are total', COUNT(Name), 'actors.' FROM OCCUPATIONS
WHERE Occupation = 'Actor')
UNION
(SELECT 'There are total', COUNT(Name), 'professors.' FROM OCCUPATIONS
WHERE Occupation = 'Professor')
ORDER BY OccupationCount;
但是,您不必使用UNION
进行这些操作。您可以轻松地使用COUNT
和groupby
和WHERE
子句:
SELECT
'There are total',
COUNT(Name) OccupationCount,
CONCAT(LOWER(Occupation), 's')
FROM OCCUPATIONS
WHERE Occupation IN('Doctor', 'Singer', 'Actor', 'Professor')
GROUP BY Occupation
ORDER BY OccupationCount;
您需要别名COUNT(Name
)并按顺序使用该别名:
(SELECT 'There are total', COUNT(Name) OccupationCount, 'doctors.' FROM OCCUPATIONS
WHERE Occupation = 'Doctor')
UNION
(SELECT 'There are total', COUNT(Name), 'singers.' FROM OCCUPATIONS
WHERE Occupation = 'Singer')
UNION
(SELECT 'There are total', COUNT(Name), 'actors.' FROM OCCUPATIONS
WHERE Occupation = 'Actor')
UNION
(SELECT 'There are total', COUNT(Name), 'professors.' FROM OCCUPATIONS
WHERE Occupation = 'Professor')
ORDER BY OccupationCount;
但是,您不必使用UNION
进行这些操作。您可以轻松地使用COUNT
和groupby
和WHERE
子句:
SELECT
'There are total',
COUNT(Name) OccupationCount,
CONCAT(LOWER(Occupation), 's')
FROM OCCUPATIONS
WHERE Occupation IN('Doctor', 'Singer', 'Actor', 'Professor')
GROUP BY Occupation
ORDER BY OccupationCount;
可以使用列编号而不是表达式来执行此操作:
ORDER BY 2
。。。将按第二列进行排序
计数(职业)
不是出现在选择
列表中的内容,也不是可用的内容。我假设您打算对每个子查询中的计数(名称)
进行排序。您可以使用列编号而不是表达式:
ORDER BY 2
。。。将按第二列进行排序
计数(职业)
不是出现在选择
列表中的内容,也不是可用的内容。我假设您打算对每个子查询中的Count(name)
进行排序