1

让我们假设我必须与许多有很多猫的祖母打交道。我有一张桌子 granny_cat :

granny_id | kitty_name
--------------------
1           Kizzy
1           Jimmy
1           Katty
2           Georges
2           Albert
3           Panther

我想检索一个奶奶 1 猫的列表,即得到类似的东西(使用 php 语法)

array("Kizzy","Jimmy","Katty")

但是,查询

SELECT kitty_name WHERE granny_id = 1

返回类似的东西

array
(
   array('kitty_name' => "Kizzy"),
   array('kitty_name' => "Jimmy"),
   array('kitty_name' => "Katty")
)

这是非常合乎逻辑的,因为我可以使用类似的查询获取两个或更多字段。我显然可以映射这个数组来得到我想要的,但是,我想知道是否有一种(简单的)方法可以直接从 mysql 中获取它。

谢谢。

4

2 回答 2

1
SELECT  GROUP_CONCAT(kitty_name) 
FROM    mytable
WHERE   granny_id = 1

将为您提供逗号分隔的列表,您可以将其explode放入数组中。

MySQL不支持本机数组数据类型。在PostgreSQL您将能够执行以下操作:

SELECT  ARRAY
        (
        SELECT  kitty_name
        FROM    mytable
        WHERE   granny_id = 1
        ) AS kitties

,这会给你一个原生PHP数组。

于 2009-08-18T17:59:17.280 回答
0

包装库通常会处理这个问题,例如ADODbGetCol()方法:

$names=$db->GetCol('SELECT kitty_name WHERE granny_id = 1');
于 2009-08-18T17:57:12.590 回答