【发布时间】:2020-11-17 08:01:47
【问题描述】:
下午好。
我有两张桌子:
1 - table1 - (id, address, who_lives) who_lives 字段 - 文本,以逗号分隔的标识符列表
2 - table2 - (id, name_of_resident)
表1的组成
表2的组成
9 |彼得罗夫 11|西多罗夫 12|伊万诺夫 13|波波夫
如何使 MySQL 请求,最好是通过连接,结果是
美国俄勒冈州|伊万诺夫,波波夫 美国华盛顿|彼得罗夫,西多罗夫
如果可能,将逗号替换为 br 标签:Ivanov,Popov -> Ivanov >br
【问题讨论】:
-
FIND_IN_SET()、GROUP BY、GROUP_CONCAT()。
-
但我建议您规范化您的数据并避免使用 CSV。
-
FIND_IN_SET 不适合 - 只能选择一列。
SELECT t1.*, GROUP_CONCAT(t2.name_of_resident) FROM table1 t1, table2 t2 WHERE t2.id IN ( SELECT who_lives FROM table1 t3 WHERE t3.id=t1.id ) GROUP BY t1.id
只返回一个名称 -
您的 WHERE IN 将无法正常工作 - 它只会过滤 CSV 中第一个元素的行。