在php或mysql中进行字符串切片substring_index

时间:2018-09-13 08:50:38

标签: php mysql group-concat

必须对以下查询的输出进行切片。

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 :(得分: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