以下是表一(人)中的一些数据
Person Table
person_ID | Name | Address
1 | JC | 303 Main Street
2 | NM | 444 Nowhere Drive
表二(属性)
Attribute table
person_ID | attribute
1 | dog
1 | cat
2 | bearded
当我加入表格时,我得到以下观点:
person_id | name | attribute
1 | JC | dog
1 | JC | cat
2 | NM | bearded
它们是左表中的重复行。它包含相同的person_id等。我想将前两个结果合并为一行。像这样:
person_id | name | attribute | attribute
1 | JC | dog cat
2 | NM | bearded NULL
或者这个:
person_id | name | attribute
1 | JC | dog, cat
2 | NM | bearded
以下是我尝试过的一些代码:
SELECT person.*,Attribute.att FROM `person`,`Attribute`
WHERE person.`person_id` = Attribute.person_id
AND name = "" group by person_id
左连接
Select * from person AS P
LEFT JOIN Attribute AS N
ON P.person_id = N.person_id
还尝试了内连接。
答案 0 :(得分:1)
MySQL有一个函数GROUP_CONCAT,可以将行连接成一个字符串。
这样的事情应该有效:
SELECT person.*, (
SELECT GROUP_CONCAT(attribute SEPARATOR ',')
FROM Attribute
WHERE person.id = Attribute.person_id
) as attributes
FROM `person`
我在这台机器上没有MySQL,所以如果有小错误我会道歉。