2017-04-06 20 views
1

これは可能でしたので、MySQLの機能でGROUP_CONCATを制限するオプションはありますか?PHP MySQLのGROUP_CONCAT制限

例えば:

GROUP_CONCAT(ColName ORDER BY ColName DESC LIMIT 5) 

私は、これは深刻なパフォーマンスが低下しますので、サブクエリを使用する必要はありません。私は後でPHPで配列をスライスすることができますが、私はMySQLにこれを実現するオプションがあるのか​​不思議でした。

+1

* "サブクエリを使用したくない" * - とにかくサブクエリに 'LIMIT'を適用するには、少しばかげたやり方をしなければなりません:http://stackoverflow.com/questions/7124418/mysql-サブクエリリミット – CD001

+0

@ CD001、私は感謝しています –

答えて

9

ありませんが、あなたはこれを行うことができます。

SUBSTRING_INDEX(GROUP_CONCAT(ColName ORDER BY ColName DESC), ',', 5) 

あなたは中間の文字列が1024文字を超えるかもしれない場合には、(group_concat_max_lenを参照)最大長連結グループに注意を払う必要がある場合があります。デフォルトを変更することができます。

+1

あなたは1つを見逃している ')' – Rams

+1

@Ramsの後。 。 。ありがとうございました。 –

+0

@GordonLinoff、素晴らしいソリューション、ありがとう。私は5つの整数だけを返すので、1024は十分に大きくなります。 –