нарезка строк в индексе подстрок 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
на выбор строки? если нет, то как я могу получить ожидаемое вывод
2
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