通过键将两个表连接到数组中

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 表连接到一个连接表中?

mysql - 如何使用父表中的值将连接表连接到另一个连接表?

Laravel一张表连接到另外两个由多对多的关系