нарезка строк в php или mysql substring_index - PullRequest
0 голосов
/ 13 сентября 2018

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

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

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

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

Science

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

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

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

GROUP_CONCAT(DISTINCT subject.en_title ORDER BY subject.id) AS sub
0 голосов
/ 13 сентября 2018

Вы должны попробовать использовать REPLACE

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

Я бы также поместил DISTINCT вне GROUP_CONCAT и правильно использовал GROUP BY

...