PHP MYSQL 返回字段中的数组

标签 php mysql

我有点困惑如何开始这个。我有一个属性名称表,然后是一个属性字段名称表。因此

**Table: attributes**
id
name

**Table: attributes_fields **
id
attrID
fieldname

attrFields 可以有多个记录附加到一个 attr。我正在尝试获得类似这样的输出。

Name    Fields (comma separated field id's)
9       1,3,4,5

到目前为止我有这个。

SELECT * 
FROM attributes 
    LEFT JOIN attributes_fields on attributes.attributeID = attributes_fields.attributeFieldParentID
WHERE attributes.attributeID = 9

哪个有效,但不是我想要的那样。我正在寻找要返回的一行。以上将所有字段作为多行返回。

任何帮助都会很棒。

谢谢!

最佳答案

您可以使用 GROUP_CONCAT 函数来执行此操作。 此函数返回一个字符串结果,其中包含来自组的连接的非 NULL 值。完整语法如下:

GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val])

mysql> SELECT student_name,
    ->     GROUP_CONCAT(test_score)
    ->     FROM student
    ->     GROUP BY student_name;

或者:

mysql> SELECT student_name,
    ->     GROUP_CONCAT(DISTINCT test_score
    ->               ORDER BY test_score DESC SEPARATOR ' ')
    ->     FROM student
    ->     GROUP BY student_name;

请在这里查看:GROUP_CONCAT

关于PHP MYSQL 返回字段中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28223128/

相关文章:

phpStorm - 配置 xDebug

php - Symfony2、PHP 在统计数据库中的许多对象时减少查询权重

jquery - 如何从mysql数据库显示struts2 jquery网格中的blob类型?

mysql - 左外连接子查询

php - 获取最近7天内的注册用户

php - 使用 GoogleAPI 的 OAuth 给出 'invalid_grant'

php - 我的语法有什么问题? (PHP/HTML)

javascript - 禁用 Youtube 相关视频 rel=0

mysql - 比较两个unix时间戳以查看它们在MySql中是否处于同一日期

mysql - 如何插入选择...哪里不存在选择?