我有桌子: 表a:
id | content
1 | a, b, c
2 | b
3 | b, c, d
表 b:
id | name | value
1 | a | 3000
2 | b | 4505
3 | c | 1257
4 | k | 2323
我想要这样的输出:
id | value | content
1 | 3000, 4505, 1257 | a, b, c
2 | 4505 | b
3 | 1257 | c
答案 0 :(得分:1)
您可以尝试在 FIND_IN_SET
的帮助下连接两个表。然后由 b id
聚合以生成 CSV 值:
SELECT
a.id,
GROUP_CONCAT(b.value ORDER BY b.id) value,
GROUP_CONCAT(b.name ORDER BY b.id) content
FROM TableA a
INNER JOIN TableB b
ON FIND_IN_SET(b.name, a.content) > 0
GROUP BY
a.id;
注意:您通常应该避免在 SQL 表中存储 CSV 数据。需要使用 FIND_IN_SET
通常是一种数据异味。