Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以从MySQL表返回数组?_Mysql_Arrays - Fatal编程技术网

是否可以从MySQL表返回数组?

是否可以从MySQL表返回数组?,mysql,arrays,Mysql,Arrays,我有两个基本表——一个主表包含主ID记录,另一个相关表包含可变数量的值引用,如下所示 表A:主要问题 +----+-------------+ | ID | description | +----+-------------+ | 1 | Arnold | +----+-------------+ | 3 | Baker | +----+-------------+ | 7 | Charlie | +----+-------------+ 表B:相关项目 +

我有两个基本表——一个主表包含主ID记录,另一个相关表包含可变数量的值引用,如下所示

表A:主要问题

+----+-------------+
| ID | description |
+----+-------------+
| 1  | Arnold      |
+----+-------------+
| 3  | Baker       |
+----+-------------+
| 7  | Charlie     |
+----+-------------+
表B:相关项目

+----+-------+
| ID | value |
+----+-------+
| 1  | 1     |
+----+-------+
| 1  | 2     |
+----+-------+
| 3  | 3     |
+----+-------+
| 3  | 2     |
+----+-------+
| 3  | 1     |
+----+-------+
| 7  | 2     |
+----+-------+
在连接表A和表B之后,是否可以以表B中的值列作为数组返回的方式返回列

根据上面的示例,我希望返回类似以下结果集的内容,其中第二列可以作为数组值而不是字符串值处理:

{
 [0] => 1
 [1] => array(1,2)
}
{
 [0] => 3
 [1] => array(3,2,1)
}
{
 [0] => 7
 [1] => array(2)
}
以下是我将列作为字符串值获取的查询语句:

SELECT tablea.*, tableb.value
FROM tablea
LEFT JOIN tableb ON tableb.ID = tablea.ID

通常,这是通过在使用应用程序逻辑读取结果集时构建多维数组来完成的。下面是一些伪代码:

array = [];
while (row = {some DB row retrieval method}) {
    array[row['id']][] = row['value'];
}
如果PHP是您的语言:

$array = array();
while ($row = {some DB row retrieval method}) {
    $array[$row['id']][] = $row['value'];
}

从纯MySQL来看,不是。如果您使用的是编程语言ie.PHP,那么是的。您必须将数组打包到(比如)存储字符串中,并在MySQL返回后解包。类似于2 1在PHP中使用内爆和分解。那么您的意思是我将需要返回表b值,例如以逗号分隔的字符串,然后使用PHP进行转换?这正是我所想的,但我想问问是否有人通过mysql中的查询语句正确地做到了这一点。感谢您澄清和回答“FreshPrinceOfSOThat”这就是我所想的“PhilPerry-Thanks MikeBrant”。现在我只需要获得正确的联接查询,以收集表B中的许多行,并将它们转换为我的结果集的一列。@H.Ferrence您应该将您的问题分解并更新。@H.Ferrence这只是选择a.id,b.a.id=b.id上的内部连接b的值。谢谢@MikeBrant-我来试试。我不完全确定@FreshPrinceOfSO是什么意思