mysql - 在复制一些结果的两个表之间加入
问题描述
我在我的 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
可能吗?
解决方案
如果您最多有两个,则可以使用聚合:
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
推荐阅读
- java - 使用 Comparator 根据多个字段的值比较对象
- dygraphs - updateOptions 和 strokeWidth
- php - 从 fread 函数中获取数据时显示双数据的计数器
- python - 如何创建一个填充有最小值和最大值的新 DataFrame?
- git - 在 git 中引用 master branch-tip 和 HEAD 之间的所有提交
- c++ - x 和 y 轴的陀螺仪数据相同,如何解决?
- xamarin.forms - 在 google play 上上传 Xamarin 应用程序 (Alpha) - 未优化的 APK
- sql - 通过与下一行比较来选择行
- html - 如何通过水平父块居中图标?
- python - 为什么 Python 会在某些列表元素中添加换行符?