Mysql:使用Limit和Con

Mysql:使用Limit和Con,mysql,sql-order-by,limit,Mysql,Sql Order By,Limit,我有一个查询,它给了我一个特定国家的所有评级: SELECT DISTINCT Country, GROUP_CONCAT(rating ORDER BY rating DESC ) AS Ranking FROM final group by Country ORDER BY Country; 表是这样的: "Country" "Rating" "Title" " zimbabwe" "0" "Biology Study Guide" " zimbabwe" "0" "Impa

我有一个查询,它给了我一个特定国家的所有评级:

SELECT DISTINCT Country, GROUP_CONCAT(rating ORDER BY rating DESC ) AS Ranking
FROM final
group by Country
ORDER BY Country;
表是这样的:

"Country"   "Rating"    "Title" 
" zimbabwe" "0" "Biology Study Guide" 
" zimbabwe" "0" "Impact: A Guide to Business Communication (Esl English 2nd Language Series)" 
" zimbabwe" "0" "Wayside School Gets a Little Stranger (Wayside School)" 
" ysa"  "5" "Side effects" 
" ysa"  "9" "The Last Precinct" 
" ysa"  "0" "The Horse Whisperer" 
" x"    "0" "The Evi 
" yugoslavia"   "0" "Wild Animus" 
" yugoslavia"   "8" "Complete Works of William Shakespeare (Wordsworth Royals Series)" 
" yugoslavia"   "3" "Wild Animus"
我遇到了两个问题。我想把每个国家的收视率限制在10分以内。我在
DESC
之后添加了
LIMIT 10
,得到了一个语法错误


第二个问题是,在DESC顺序中,10小于9,因为它以1开头。我该如何处理呢?

为了限制
组\u CONCAT()
您可以使用
子字符串\u INDEX()
来剪切所需的元素。要将字符串排序为数字,可以使用
CAST()
进行排序。因此,您的查询应该如下所示:

SELECT DISTINCT
    Country,
    SUBSTRING_INDEX(
        GROUP_CONCAT(rating ORDER BY CAST(rating AS UNSIGNED) DESC), ',', 10
    ) AS Ranking
FROM
    final
GROUP BY
    Country
ORDER BY
    Country;

给我们看最后一张表。它是这样的:“国家”“等级”“头衔”“津巴布韦”“0”“生物学学习指南”“津巴布韦”“0”“影响:商业交流指南(Esl英语第二语言系列)”“津巴布韦”“0”“路旁学校有点陌生(路旁学校)”“ysa”“5”“副作用”“ysa”“9”“最后一个选区”“ysa”“0”“马语者”“x”“0”“Evi”“南斯拉夫”“0”“野生动物”“南斯拉夫”“8”“威廉·莎士比亚全集(华兹华斯皇家系列)”“南斯拉夫”“3”“野生动物”请使用此数据更新您的问题。在子字符串索引错误时获取不正确的本地调用参数计数。是,括号中有语法错误,现在可以了。太棒了。我理解CAST(),但对整个语句的子字符串索引有点困惑。我必须读更多关于这方面的内容。谢谢mitkosoft。