Search code examples
phpmysqlgroup-concat

string slicing in php or mysql substring_index


Output of following query has to be sliced.

GROUP_CONCAT(DISTINCT subject.id, '-', subject.en_title ORDER BY subject.id) AS sub,

Output is

3-Math
4-Science

I am Using PHP substr

$sub=substr(strstr($row['sub'], '-'), 1);

so result would be

Math
Science

But It would be better, if it can be sliced in mysql, because I think it reduces php code and less data fetched from database. So I have tried SUBSTRING_INDEX

SUBSTRING_INDEX(GROUP_CONCAT(DISTINCT subject.id, '-', subject.en_title ORDER BY subject.id), '-', -1) AS sub,

But I get only one row

Science

Here, does SUBSTRING_INDEX affect to select row ? if not how can I fetch expected output


Solution

  • You don't need to CONCAT subject.id. You can directly use DISTINCT clause on subject.en_title. Use the following expression instead:

    GROUP_CONCAT(DISTINCT subject.en_title ORDER BY subject.id) AS sub