php或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

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

You should try using REPLACE

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

I would also put the DISTINCT outside of the GROUP_CONCAT, and properly use GROUP BY