【问题标题】:db field(GROUP_CONCAT) as array数据库字段(GROUP_CONCAT)作为数组
【发布时间】:2012-08-25 22:10:36
【问题描述】:

我的桌子..

文章字段:

  • 身份证
  • 姓名

字段:

  • 身份证
  • 姓名

article_cats 字段:

  • 身份证
  • article_id
  • cat_id

我有这个 sql:

SELECT
  a.id AS article_id ,
  a.name AS article_name ,
  COUNT( c.id ) AS num_categories ,
  GROUP_CONCAT( c.name ) AS categorie_names
 FROM
  articles AS a
 LEFT JOIN
  article_cats AS ac
 ON
  ( a.id = ac.article_id )
 LEFT JOIN
  cats AS c
 ON
  ( ac.cat_id = c.id )
 GROUP BY
  a.id 

它提供了这个表结构:

我需要的是,在数组中获取类别 ID 和名称,因此 categorie_names 将是一个数组,其中每个类别都有字段 cat_id 和 cat_name。

用 mysql 可以吗?

【问题讨论】:

    标签: mysql arrays join group-concat


    【解决方案1】:

    在数据库中数组表示表。如果您想要数组格式的数据,则最好将值存储在单独的临时表中。

    喜欢

    article_id, category_id, category_name
    1           1            Cat1
    2           1            Cat1
    3           2            Cat2
    3           1            Cat1
    

    或者你必须在 group_concat 中使用串联

    GROUP_CONCAT(cast(concat(c.id,\': \',c.name) AS char)SEPARATOR \', \') AS categorie_names
    

    所以结果将类似于 2:Cat2,1:Cat2。您可以拆分(首先使用 ',' 然后使用 ':')此值并检索 ID 和名称。

    【讨论】:

      猜你喜欢
      • 2012-10-03
      • 2014-10-03
      • 2021-04-18
      • 2011-07-17
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多