必须切断以下查询的输出。
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
会影响选择行吗?如果不是,我如何获取预期的输出
你不需要CONCAT
subject.id
。你可以直接在DISTINCT
上使用subject.en_title
条款。请改用以下表达式:
GROUP_CONCAT(DISTINCT subject.en_title ORDER BY subject.id) AS sub
你应该尝试使用REPLACE
SELECT
REPLACE(GROUP_CONCAT(DISTINCT subject.id, '-', subject.en_title ORDER BY subject.id), '-', 1) AS sub
我还将DISTINCT放在GROUP_CONCAT之外,并正确使用GROUP BY