【问题标题】:Mysql: Using Limit with ConMysql:使用限制与 Con
【发布时间】:2016-07-29 10:25:13
【问题描述】:

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

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 开头。我该如何处理?

【问题讨论】:

  • 向我们展示final 表。
  • 它是这样的:“国家”“评级”“标题”“津巴布韦”“0”“生物学研究指南”“津巴布韦”“0”“影响:商务沟通指南(Esl 英语)第二语言系列)”“津巴布韦”“0”“路边学校有点陌生人(路边学校)”“ysa”“5”“副作用”“ysa”“9”“最后的选区”“ysa”“0” “马语者”“x”“0”“The Evi”南斯拉夫“0”“Wild Animus”“南斯拉夫”“8”“威廉莎士比亚全集(华兹华斯王室系列)”“南斯拉夫”“3”“Wild阿尼姆斯”
  • 请使用此数据更新您的问题。

标签: mysql sql-order-by limit


【解决方案1】:

为了限制GROUP_CONCAT(),您可以使用SUBSTRING_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;

【讨论】:

  • 在子字符串索引错误时获取不正确的参数计数到本机调用。
  • 是的,括号中有语法错误,现在可以了。
  • 它的工作真棒。我理解 CAST() 但对整个语句的子字符串索引有点困惑。将不得不阅读更多相关信息。谢谢 mitkosoft。
猜你喜欢
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
  • 2014-02-19
  • 2015-10-05
相关资源
最近更新 更多