通过键将两个表连接到数组中
Posted
技术标签:
【中文标题】通过键将两个表连接到数组中【英文标题】:JOIN two tables into array by key 【发布时间】:2014-01-02 22:29:03 【问题描述】:我有两个表想要加入到数组中,其中包含 table2 的数组:
table1
id value
----------
1 red
2 blue
和
table2
id url
-----------
1 image1
1 image2
1 image3
2 image1
2 image2
2 image3
mysql 查询是:
SELECT HIGH_PRIORITY * FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE table1.id = 1
我希望得到如下结果:
Array
(
[value] => red
(
[url] => Array
(
[0] => image1
[1] => image2
[2] => image3
)
)
)
但是根据table2的条目数量总是table1的倍数
Array
(
[0] => Array
(
[value] => red
[url] => image1
)
[1] => Array
(
[value] => red
[url] => image2
)
[2] => Array
(
[value] => red
[url] => image3
)
)
我应该在查询中更改什么以获得所需的数组?
【问题讨论】:
你可以做一个 GROUP_CONCAT 并且你会有你的第一个数组,但是键 0 ='image1,image2,image3' 你为什么使用 MyISAM 而不是 InnoDB? 【参考方案1】:看起来运算符的关联性与您的预期相反。你有没有试过这个:
SELECT HIGH_PRIORITY * FROM (
SELECT table1.id, table2.url
FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE table1.id = 1
) data
【讨论】:
以上是关于通过键将两个表连接到数组中的主要内容,如果未能解决你的问题,请参考以下文章
使用 RIGHT JOINT 将两个表连接到一个 datagridview
Hibernate:如何在注释中将三个 3 表连接到一个连接表中?