两个表之间的联接重复了一些结果

时间:2019-04-17 13:17:19

标签: php mysql sql mysqli

通过此查询,我在PHP中加入了两个表:

SELECT a.id,b.address
FROM mytable a 
LEFT JOIN mysecondtable b 
ON a.`id`=b.`id` 
WHERE a.`Name` LIKE '?'

在表b中,我有2行具有相同的用户“ id”,但对于查询,我希望具有以下内容: 同一结果中的一个id两个地址

目前,我有2个结果如下:

12 theaddress
12 thesecondaddress

我想

12 theaddress thesecondaddress

有可能吗?谢谢

1 个答案:

答案 0 :(得分:4)

如果最多有两个,则可以使用聚合:

SELECT a.id MIN(b.address) as address1,
       NULLIF(MAX(b.address), MIN(b.address)) as address2
FROM mytable a LEFT JOIN
     mysecondtable b 
     ON a.`id`=b.`id` 
WHERE a.`Name` LIKE ?
GROUP BY a.id;

如果地址数量不确定,则可以将它们放入带有分隔符的字符串中:

SELECT a.id GROUP_CONCAT(b.address SEPARATOR '|') as addresses
FROM mytable a LEFT JOIN
     mysecondtable b 
     ON a.`id`=b.`id` 
WHERE a.`Name` LIKE ?
GROUP BY a.id