首页 > 解决方案 > 在复制一些结果的两个表之间加入

问题描述

我在我的 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

可能吗?

标签: mysqlsql

解决方案


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

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

推荐阅读