从表中创建多维数组,其中重复ID具有相同的父键

时间:2015-07-17 07:10:13

标签: php mysql sql arrays multidimensional-array

我有一张这样的表:

width: 50%;

我想要一个像这样的对象/数组:

--primary id---office id----
|----1-------|---10--------|
|----2-------|---10--------|
|----3-------|---20--------|
|----4-------|---10--------|
|----5-------|---20--------|
----------------------------

我的查询是:

Array = array(
  "10" => array(
      "Primary ID" => 1,
      "Primary ID" => 2,
      "Primary ID" => 4
   ),
  "20" => array(
      "Primary ID" => 3,
      "Primary ID" => 5
   )
)

这种情况有更好的查询吗?
是否有一种简单而小巧的方法来创建如上所述的数组?

编辑:我正在使用SQL Server ......很遗憾没有GROUP_CONCAT等......):

谢谢!

2 个答案:

答案 0 :(得分:3)

最好使用LISTAGG函数。 即。

SELECT office id, LISTAGG(primary id, ', ')
FROM table
GROUP BY office id
ORDER BY office id

一旦得到上面的sql的结果,我们就可以通过分隔符“''来标记每一行,并将标记化的数据放在数组中。

答案 1 :(得分:2)

您可以使用以下查询:

SELECT primary id, GROUP_CONCAT(office id) as office_id
FROM table
GROUP BY primary_id;

这会将结果返回为:

primary_id   office_id
---------------------------
10           1,2,4
20           3,5

这样可以更轻松地处理它并将其存储在数组中。