нарезка строк в индексе подстрок php или mysql


Вывод следующего запроса должен быть срезан.

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

Вывод

3-Math
4-Science

Я использую PHP substr

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

Таким образом, результатом будет

Math
Science

Но было бы лучше, если бы его можно было нарезать в mysql, потому что я думаю, что это уменьшает php-код и меньше данных, извлекаемых из базы данных. Поэтому я попробовал ПОДСТРОКУ_ИНДЕКС

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

Но я получаю только одну строку

Science

Здесь влияет ли SUBSTRING_INDEX на выбор строки? если нет, то как я могу получить ожидаемое вывод

Author: AnandHmt, 2018-09-13

2 answers

Вам не нужно CONCAT subject.id. Вы можете напрямую использовать предложение DISTINCT в subject.en_title. Вместо этого используйте следующее выражение:

GROUP_CONCAT(DISTINCT subject.en_title ORDER BY subject.id) AS sub
 1
Author: Madhur Bhaiya, 2018-09-13 09:36:06

Вам следует попробовать использовать ЗАМЕНУ

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

Я бы также поместил РАЗЛИЧИЕ за пределы GROUP_CONCAT и правильно использовал GROUP BY

 0
Author: Guy Louzon, 2018-09-13 08:56:17