【发布时间】:2020-10-05 04:11:50
【问题描述】:
如何仅连接为 MySQL 中每一行指定的列的唯一列?
表格“示例”:
考虑下表名为example:
* -------------------------- *
| Id | Col_A | Col_B | Col_C |
| -------------------------- |
| 0 | foo | bar | qux |
| 1 | foo | foo | bar |
| 2 | foo | qux | qux |
| 3 | foo | foo | foo |
* -------------------------- *
尝试:
我只想连接 Col_A、Col_B 和 Col_C 中唯一的值(仅唯一的集合)。这是我的尝试:
SELECT Id,
CONCAT_WS(',', DISTINCT Col_A, Col_B, Col_C) UniqueColumnSet
FROM Example
预期结果:
* -------------------- *
| Id | UniqueColumnSet |
| -------------------- |
| 0 | foo,bar,qux |
| 1 | foo,bar |
| 2 | foo,qux |
| 3 | foo |
* -------------------- *
收到错误:
#1064 - 您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在 'DISTINCT Col_A, Col_B, Col_C) UniqueColumnSet 附近使用的正确语法 FROM Example LIMIT 0, 25' at line 2
我知道您不能在CONCAT_WS 中像这样使用DISTINCT。获得预期结果的最有效方法是什么?
【问题讨论】:
-
这种问题是架构设计不佳的症状
标签: mysql set mariadb distinct concat