我有一张这样的表:
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
)
)
这种情况有更好的查询吗?
是否有一种简单而小巧的方法来创建如上所述的数组?
谢谢!
答案 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
这样可以更轻松地处理它并将其存储在数组中。