MySQL如何优化GROUP_CONCAT查询去除拼接结果中SIGMA、UV重复值
优化后查询代码
SELECT GROUP_CONCAT(DISTINCT column_name ORDER BY column_name ASC) AS columns FROM information_schema.columns WHERE table_name IN ('trans_int_prix_gen', 'trans_int_prix_module', 'matrice_sigma');
实现说明
你之前的查询返回重复值,是因为查询的3张表都包含SIGMA、UV字段,这两个字段名会在information_schema.columns的查询结果中出现多次,GROUP_CONCAT默认拼接所有匹配值就会出现重复。本次修改的调整点如下:
- 核心通过
GROUP_CONCAT内置的DISTINCT关键字对字段名去重,原本重复出现的SIGMA、UV会仅保留1次 - 将原本外层的
ORDER BY移入GROUP_CONCAT参数内,保证拼接后的字段顺序按升序排列,语法更规范 - 将多个
OR条件替换为IN写法,查询条件的可读性更强 - 移除了多余的外层
CONCAT包裹,GROUP_CONCAT本身已经返回拼接完成的字符串,无需额外嵌套
执行上述查询后即可得到无重复字段、按升序排列的拼接结果,可直接用于VBA导入场景。
内容的提问来源于stack exchange,提问作者François Maurice
相关产品推荐
相关产品推荐

