php或mysql子字符串索引中的字符串切片

1u4esq0p  于 2021-07-06  发布在  Mysql
关注(0)|答案(2)|浏览(337)

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

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` 影响选择行吗?如果没有,我如何获取预期的输出
zphenhs4

zphenhs41#

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

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

vybvopom2#

你应该试着用replace

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

我也会把distinct放在groupconcat之外,并正确地使用groupby

相关问题