php或mysql substring_index中的字符串切片

问题描述 投票:2回答:2

必须切断以下查询的输出。

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会影响选择行吗?如果不是,我如何获取预期的输出

php mysql group-concat
2个回答
1
投票

你不需要CONCAT subject.id。你可以直接在DISTINCT上使用subject.en_title条款。请改用以下表达式:

GROUP_CONCAT(DISTINCT subject.en_title ORDER BY subject.id) AS sub

0
投票

你应该尝试使用REPLACE

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

我还将DISTINCT放在GROUP_CONCAT之外,并正确使用GROUP BY

© www.soinside.com 2019 - 2024. All rights reserved.