必须对以下查询的输出进行切片。
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
是否影响选择行?如果没有,我如何获取预期的输出
答案 0 :(得分:1)
您不需要CONCAT
subject.id
。您可以直接在DISTINCT
上使用subject.en_title
子句。请使用以下表达式:
GROUP_CONCAT(DISTINCT subject.en_title ORDER BY subject.id) AS sub
答案 1 :(得分:0)
您应该尝试使用REPLACE
SELECT
REPLACE(GROUP_CONCAT(DISTINCT subject.id, '-', subject.en_title ORDER BY subject.id), '-', 1) AS sub
我还将DISTINCT放在GROUP_CONCAT之外,并正确使用GROUP BY