我有一个问题,如果它们属于同一组,就需要串联字符串。
SELECT e.id,
ke.value,
re.value AS re_value,
GROUP_CONCAT(g.value,', ')
FROM entry e
INNER JOIN k_ele ke ON e.id = ke.fk
INNER JOIN r_ele re ON e.id = re.fk
INNER JOIN sense s ON e.id = s.fk
INNER JOIN gloss g ON s.id = g.fk
WHERE g.lang IS NULL
GROUP BY s.id
ORDER BY re_value
但是
GROUP_CONCAT(DISTINCT g.value, ', ')
会得到这个结果。
亲密关系,爱情关系
可以看到连接中存在重复。如何避免连接中的重复项?
GROUP_CONCAT(DISTINCT)
时无法指定分隔符,虽然这个函数可以工作,但如果你想改变默认的,
分隔符,你可以采用CL答案中展示的子查询方法,或者使用替换方法(我认为子查询方法更好)。 - GarethDreplace(GROUP_CONCAT(DISTINCT g.value), ',', the_delimiter)
。虽然很糟糕,但我想快速展示一种应对其他分隔符和非常大的查询子句困境的方法。然而,使用此方法前请确保你的值内不含逗号。 - Kelly