php - 使用 MySQL 直接从列的数据中获取列表

标签 php sql mysql list transpose

让我们假设我必须与许多养猫的祖母打交道。我有一张 table 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 中获取它。

谢谢。

最佳答案

SELECT  GROUP_CONCAT(kitty_name) 
FROM    mytable
WHERE   granny_id = 1

将为您提供以逗号分隔的列表,您可以将其展开成一个数组。

MySQL 不支持 native 数组数据类型。在 PostgreSQL 中,您可以执行以下操作:

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

,这将为您提供原生 PHP 数组。

关于php - 使用 MySQL 直接从列的数据中获取列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1295478/

相关文章:

php - 针对 MySQL 查询优化慢速匹配

mysql - 以IN子查询的顺序对查询结果进行排序

sql - 查询

sql - 从 sql server 2005 发送关于 @@error 的 dbmail

sql - 在 SQL 中正确使用 Count() 和 Sum() 吗?

php - 如何在 PHP 中使用模数根据两种不同的模式将 CSS 类添加到图像网格中?

mysql - 使用其他表中的值更改默认值

php - 如果为NULL,如何将值插入表中? - MySql

php - mySql - 使用逗号分隔值列表创建连接

php - 正在更新错误的数据库记录