带有计数查询的MySQL案例
我以前也问过类似的问题,但我意识到我想要的结果是完全不同的 我有以下疑问带有计数查询的MySQL案例,mysql,Mysql,我以前也问过类似的问题,但我意识到我想要的结果是完全不同的 我有以下疑问 SELECT LEVEL, COUNT(*) AS total FROM admin_xxx GROUP BY LEVEL ORDER BY total DESC LIMIT 10 表输出 Level Total 4 27 3 24 7 19 5 10 8 9 6 7 1 5 2 3 现在我只想用单词而不是数字来重命名实际
SELECT LEVEL, COUNT(*) AS total FROM admin_xxx
GROUP BY LEVEL ORDER BY total DESC LIMIT 10
表输出
Level Total
4 27
3 24
7 19
5 10
8 9
6 7
1 5
2 3
现在我只想用单词而不是数字来重命名实际级别
我想将以下内容作为输出
Level Total
Bronze 27
Silver 24
Gold 19
Gold2 10
Gold3 9
Gold4 7
Gold5 5
Gold6 3
每10个级别都有一个单独的级别名称
我尝试了以下操作,但出现语法错误
SELECT LEVEL, COUNT(*) AS total FROM admin_xxx
CASE
WHEN LEVEL = 1 THEN "Bronze",
etc...
WHEN LEVEL = 10 THEN "Gold10"
END as LEVEL
GROUP BY LEVEL ORDER BY total DESC LIMIT 10
将您的
分组方式更改为
GROUP BY (
CASE
WHEN LEVEL = 1 THEN "Bronze",
etc...
WHEN LEVEL = 10 THEN "Gold10"
END
)
您的SELECT
SELECT (
CASE
WHEN LEVEL = 1 THEN "Bronze",
etc...
WHEN LEVEL = 10 THEN "Gold10"
END
) AS LEVEL
, COUNT(*) AS total
FROM admin_xxx
GROUP BY (
CASE
WHEN LEVEL = 1 THEN "Bronze",
etc...
WHEN LEVEL = 10 THEN "Gold10"
END
)
ORDER BY total DESC LIMIT 10
你把from子句放错位置了
SELECT
CASE
WHEN LEVEL = 1 THEN "Bronze"
WHEN LEVEL = 10 THEN "Gold10"
END as LEVEL
, COUNT(*) AS total
FROM admin_xxx
GROUP BY LEVEL ORDER BY total DESC LIMIT 10
您还可以将标高/标签分隔到另一个表中,并可以将这些标高/标签连接起来。
例如:
SELECT levels.level_label, COUNT(*) AS total
FROM admin_xxx
LEFT JOIN levels ON levels.label_value = admin_xxx.level
GROUP BY levels.level_label ORDER BY total DESC LIMIT 10
这是级别表:
id level_label label_value
1 Bronze 10
2 Silver 9
3 Gold 1
4 Gold2 2
5 Gold3 3
6 Gold4 4
7 Gold5 5
8 Gold6 6
9 Gold7 7
10 Gold8 8
试试这个:显然,您应该按以下方式使用CASE
来获得所需的输出
SELECT CASE level
WHEN 1 THEN 'Bronze'
WHEN 2 THEN 'Silver'
WHEN 3 THEN 'Gold'
WHEN 4 THEN 'Gold2'
WHEN 5 THEN 'Gold3'
WHEN 6 THEN 'Gold4'
WHEN 6 THEN 'Gold5'
WHEN 6 THEN 'Gold6'
ELSE 'Unknown' END Level,
COUNT(*) AS total
FROM admin_xxx
GROUP BY level
ORDER BY total DESC LIMIT 10
在一个表上进行简单的连接应该会更容易,该表包含级别名称及其id,然后按级别名称分组。另外,通过这种方式,您的级别名称不会硬编码到您的sqlI中。我尝试了您的代码,但出现了以下错误:1064-您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以了解在第3行“当级别=10时,然后“Gold10”结束为级别”附近使用的正确语法。我尝试了您的代码,但出现错误:1064-您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解在第3行中使用接近“当级别=10时,则“Gold10”结束)作为级别,计数(*)作为”的正确语法