【发布时间】: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
你能告诉我我做错了什么吗? 谢谢
【问题讨论】:
-
你应该在你的
group by子句中省略options_values_id,并可能在其中添加options_id -
CONCAT('''',GROUP_CONCAT(DISTINCT options_values_id ORDER BY options_values_id SEPARATOR ', '),'''') AS options_values_id_str
标签: mysql group-concat