【问题标题】:How to concat find_in_set results with comma separated string in mysql如何在 mysql 中使用逗号分隔的字符串连接 find_in_set 结果
【发布时间】:2015-11-24 08:07:24
【问题描述】:

我在下面的 select sql 查询中使用了FIND_IN_SET 并得到了结果,但我想存储industrie_branch 逗号分隔列表

选择查询:

SELECT i.instagrammer_id
      , CONCAT(i.first_name,' ',i.last_name) AS instagrammer_name
      , FLOOR(DATEDIFF (NOW(), i.date_of_birth)/365) AS age
      , i.date_of_birth
      , i.gender
      , i.email
      , i.created_date
      , b.name_en AS industrie_branch
FROM instagrammer AS i
LEFT JOIN industries_branches b ON FIND_IN_SET(b.industrie_branch_id, i.industrie_branch)
WHERE i.status = 1
ORDER BY instagrammer_name DESC

并获得上述查询的输出:

instagrammer_id     instagrammer_name       age     date_of_birth       gender      email               industrie_branch
***************     *****************       ***     *************       ******      ****************    ****************
37                  Jack                    27      1988-09-30          male        jack@hotmail.com    Food
37                  Jack                    27      1988-09-30          male        jack@hotmail.com    Photography
38                  Tom                     27      1988-09-30          male        tom@gmail.com       Lifestyle
38                  Tom                     27      1988-09-30          male        tom@gmail.com       Luxury

但我希望此输出带有 industrie_branch 的逗号分隔列表:

instagrammer_id     instagrammer_name       age     date_of_birth       gender      email               industrie_branch
***************     *****************       ***     *************       ******      ****************    ****************
37                  Jack                    27      1988-09-30          male        jack@hotmail.com    Food, Photography
38                  Tom                     27      1988-09-30          male        tom@gmail.com       Lifestyle, Luxury

【问题讨论】:

  • 永远不要将数据存储为逗号分隔值 - 这只会给您带来很多麻烦。一个值/行是SQL方式!
  • 使用SQLFiddel将您的mysql数据样本发送给我们
  • Jarlh 是正确的。然而,作为一个短期的 hack,您可以使用 GROUP_CONCAT 将此查询包装在另一个查询中
  • 只需使用此线程即可获得所需的输出,虽然不完全但很有帮助。 stackoverflow.com/questions/18113803/…
  • 但我想在我的数据表中显示记录。

标签: mysql sql database


【解决方案1】:

将它与 GROUP_CONCAT 一起使用

SELECT i.instagrammer_id
  , CONCAT(i.first_name,' ',i.last_name) AS instagrammer_name
  , FLOOR(DATEDIFF (NOW(), i.date_of_birth)/365) AS age
  , i.date_of_birth
  , i.gender
  , i.email
  , i.created_date
  , GROUP_CONCAT(b.name_en) AS industrie_branch
FROM instagrammer AS i
LEFT JOIN industries_branches b ON FIND_IN_SET(b.industrie_branch_id, i.industrie_branch)
WHERE i.status = 1
GROUP BY i.instagrammer_id
ORDER BY instagrammer_name DESC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 2021-05-18
    • 1970-01-01
    • 2013-06-25
    • 2016-09-04
    • 1970-01-01
    相关资源
    最近更新 更多