【问题标题】:How group_concate Mysql Select in one querygroup_concat Mysql 如何在一个查询中选择
【发布时间】:2016-06-01 19:50:09
【问题描述】:

我的 MySQL 查询是:

SELECT products_id, options_id, options_values_id FROM products_options po, products_attributes pa WHERE pa.options_id=po.products_options_id AND po.products_options_name LIKE '%Velikost%' AND po.language_id=7 group by products_id, options_values_id

它给出了输出:

products_id options_id options_values_id    
3   3501    13227
3   3501    13230
4   3501    13226
4   3501    13227
4   3501    13230
4   3501    13231
5   3501    13226
5   3501    13227
5   3501    13230
5   3501    13231
6   3501    13226
6   3501    13227
6   3501    13230
6   3501    13231

现在我希望有这样的输出:

3   3501 '13227, 13230'
4   3501 '13226, 13227, 13230, 13231'
5   3501 '13226, 13227, 13230, 13231'
6   3501 '13226, 13227, 13230, 13231'

我正在尝试使用 group_concat 进行查询

SELECT products_id, options_id, group_concat( options_values_id )
FROM products_options po, products_attributes pa
WHERE pa.options_id = po.products_options_id
AND po.products_options_name LIKE '%Velikost%'
AND po.language_id =7
GROUP BY products_id, options_values_id

但它会返回:

products_id options_id group_concat(options_values_id)  
3   3501    13227,13227,13227
3   3501    13230,13230,13230
4   3501    13226,13226,13226
4   3501    13227,13227,13227
4   3501    13230,13230,13230
4   3501    13231,13231,13231
5   3501    13226,13226,13226
5   3501    13227,13227,13227
5   3501    13230,13230,13230
5   3501    13231,13231,13231
6   3501    13226,13226,13226
6   3501    13227,13227,13227
6   3501    13230,13230,13230
6   3501    13231,13231,13231

你能告诉我我做错了什么吗? 谢谢

【问题讨论】:

标签: mysql group-concat


【解决方案1】:

试试这个。

SELECT products_id, options_id, group_concat( options_values_id )
FROM products_options po, products_attributes pa
WHERE pa.options_id = po.products_options_id
AND po.products_options_name LIKE '%Velikost%'
AND po.language_id =7
GROUP BY products_id,options_id;

【讨论】:

  • 我相信options_id也需要分组。
  • 哦,。是的。我忘了他们也是重复的:)
  • 他已经按products_id分组了。更正是按options_id 而不是options_values_id 分组。你在查询中是正确的,你只是解释错了。
  • 感谢您的回答,现在一切正常
【解决方案2】:

谢谢,问题是我忘记使用 distinct。现在我的查询是

SELECT products_id, options_id, group_concat( options_values_id )
FROM products_attributes pa
WHERE pa.options_id IN (SELECT distinct products_options_id FROM products_options WHERE products_options_name LIKE '%Velikost%' AND language_id =7) 
GROUP BY  products_id, options_id

现在一切正常:

products_id options_id group_concat( options_values_id )    
3   3501    13227,13230
4   3501    13226,13227,13230,13231
5   3501    13226,13227,13230,13231
6   3501    13226,13227,13230,13231

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-11
    • 2019-05-29
    • 1970-01-01
    • 2011-08-21
    • 2021-10-01
    • 1970-01-01
    • 2014-12-08
    • 2010-12-25
    相关资源
    最近更新 更多