我想连接表A和B,B.c是一个以列表形式返回多个字符串的列。当我使用
进行内部联接时select A.x, B.c
from A
join B
on A.y=B.y
每次观察我得到一个带有[列表中的值数]行的输出。有没有办法将列表写入结果表中的单个字段,以便每次观察得到一行?
更新:
select profiles.name, profiles.street_no, profiles.street_name, profiles.postal_code, profiles.city, profiles.country_code, profiles.owner, profiles_emails.email, profiles_telephones.telephone, clusters.main_topic, group_concat(profiles_tags.tag)
from profiles
join profiles_emails
on profiles.id=profiles_emails.profiles_id
join profiles_telephones
on profiles.id=profiles_telephones.profiles_id
join profiles_tags
on profiles.id=profiles_tags.profiles_id
join profiles_clusters
on profiles_clusters.profiles_id=profiles.id
join clusters
on profiles_clusters.clusters_id=clusters.id
group by profiles.city, profiles.name, profiles.street_no, profiles.street_name, profiles.postal_code, profiles.country_code, profiles.owner, profiles_emails.email, profiles_telephones.telephone, clusters.main_topic
该组当然占用了太多时间,所需的输出只是一个包含所有选定列和最后一列作为列表的表。
答案 0 :(得分:1)
好像你需要group_concat .. 假设每个a.x值有几个b.c值,你可以使用group_concat,例如:
select A.x, group_concat(B.c)
from A
join B on A.y=B.y
group by a.x