【问题标题】:group_concat mysql comma separated fieldgroup_concat mysql 逗号分隔字段
【发布时间】:2017-10-09 09:45:24
【问题描述】:

我有以下子查询:

    SELECT GROUP_CONCAT(tb5403_matrix_header.tb5403_name_ru) 
    FROM tb5403_matrix_header 
    WHERE tb5403_matrix_header.tb5403_id IN 
 (tb0201_tb5403_ids) 
    GROUP BY tb5403_matrix_header.tb5403_id

tb0201_tb5403_ids 字段包含用逗号分隔的数字: 10、2、4 5、8、7 等等。 但是,mysql 只选择字段的第一个元素: 10 5

任何帮助家伙!

【问题讨论】:

  • 分享您的示例输入数据表
  • @KMS this is the full query: `SELECT tb0001_user.tb0001_name1, tb0001_user.tb0001_name2, (SELECT GROUP_CONCAT(tb5403_matrix_header.tb5403_name_ru) FROM tb5403_matrix_header WHERE tb5403_matrix_header.tb5403_id IN (tb0201_tb5403_ids) GROUP BY tb5403_matrix_header.tb5403_id) FROM tb0201_student INNER JOIN tb0001_user ON tb0201_tb0001_id=tb0001_user.tb0001_id INNER JOIN tb0012_class ON tb0001_user.tb0001_tb0012_id=tb0012_class.tb0012_id@98765s>
  • 编辑您的问题以提供完整的查询。很难在评论部分阅读完整的查询。并且..提供表结构、数据和期望的结果。
  • IN() 函数不能这样工作。它需要括号之间的值列表,并将IN 之前的表达式与括号之间的所有值进行比较。括号之间只有一个值:存储在tb0201_tb5403_ids 列中的字符串。 MySQL 是正确的。

标签: mysql group-by group-concat


【解决方案1】:

根据 axiac 的评论 - 试试FIND_IN_SET

SELECT GROUP_CONCAT(tb5403_matrix_header.tb5403_name_ru) 
FROM tb5403_matrix_header 
WHERE 
FIND_IN_SET(tb5403_matrix_header.tb5403_id, tb0201_tb5403_ids) != 0
GROUP BY tb5403_matrix_header.tb5403_id

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多