Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 5967041
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 22, 20262026-05-22T19:53:09+00:00 2026-05-22T19:53:09+00:00

I have a pretty big query to pull out the information about reports from

  • 0

I have a pretty big query to pull out the information about reports from each country, and right now, the only way I can limit this is by putting Limit 10 or some number at the end, which will limit the countries. However, what I want to do is limit the group_concat to 10 results per country, which in my case would be somehow limiting 10 to each instance of the word group_concat.

My current query is:

SELECT country,
GROUP_CONCAT(docID),
GROUP_CONCAT(analyst),
GROUP_CONCAT(region),
GROUP_CONCAT(report),
GROUP_CONCAT(topic),
MAX((date)) AS date,
MAX((docID)) AS docID,
GROUP_CONCAT(date) AS dates,
GROUP_CONCAT(event) AS events,
GROUP_CONCAT(province) AS provinces
FROM reports GROUP BY country 
ORDER BY date DESC, docID DESC

I have seen this question asked, and I haven’t seen any really good answers. I know the function is not built into MySQL, as you can only limit based on the characters. Has anybody solved this problem before?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-22T19:53:10+00:00Added an answer on May 22, 2026 at 7:53 pm

    Workaround
    One options is to pad your values with spaces#. So every item in group_concat is the same length.
    Lets suppose there are no items longer than 20 chars.

    Then your query would be:

    SET group_concat_max_len = 10*20+9; /*execute this first.*/
    /*10 items, 20 bytes each + 9 bytes for the separator*/
    
    SELECT country,
    REPLACE(GROUP_CONCAT(RIGHT(CONCAT(repeat('#',20),docID),20)),'#','') AS docIDs, 
    REPLACE(GROUP_CONCAT(RIGHT(CONCAT(repeat('#',20),analyst),20)),'#','') AS analysts, 
    REPLACE(GROUP_CONCAT(RIGHT(CONCAT(repeat('#',20),region,20)),'#','') AS regions, 
    REPLACE(GROUP_CONCAT(RIGHT(CONCAT(repeat('#',20),report,20)),'#','') AS reports, 
    REPLACE(GROUP_CONCAT(RIGHT(CONCAT(repeat('#',20),topic,20)),'#','') AS topics, 
    MAX((date)) AS `date`,  /* LATEST DATE*/
    MAX((docID)) AS docID,  /* LATEST DOC*/
    REPLACE(GROUP_CONCAT(RIGHT(CONCAT(repeat('#',20),date,20)),'#','') AS dates, 
    REPLACE(GROUP_CONCAT(RIGHT(CONCAT(repeat('#',20),event,20)),'#','') AS events, 
    REPLACE(GROUP_CONCAT(RIGHT(CONCAT(repeat('#',20),province,20)),'#','') AS provinces 
    FROM reports 
    GROUP BY country ORDER BY `date` DESC, docID DESC
    

    Just to recap:

    x= CONCAT(repeat('#',20),docID)  adds 20 x #################### in front of docID
    y= RIGHT(X,20)                   Takes the rightmost 20 chars of that
    z= GROUP_CONCAT(y)               strings these together up to max_len
    result = REPLACE(z,'#','') removes the `#` so the result looks normal.
    

    Or write your own version of group_concat
    You can use your own group_concat UDF.
    There are a couple of examples floating around on the net.

    E.g.: http://www.codeproject.com/KB/database/mygroupconcat.aspx?display=Mobile

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have pretty big background of .net, and I've decided that i want to
We have a pretty big ASP.NET WebForm (web application) project with a lot of
I have a pretty complicated Linq query that I can't seem to get into
I have pretty much finished my first working Symbian application, but in my hastened
I would like to have pretty URLs for my tagging system along with all
I have a pretty standard table set-up in a current application using the .NET
I have a pretty basic windows form app in .Net. All the code is
I have a pretty standard django app, and am wondering how to set the
I have a pretty generic Article model, with m2m relation to Tag model. I
We have a pretty mature COM dll, which we test using DUnit. One of

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.