MYSQL - 订购和收集2个或更多字段

时间:2015-03-23 17:18:44

标签: mysql field concat

我有这种情况,因此我需要第二张表。我必须订购文件“TYPEn”和concat()它们。

+----+------+-------+-------+-------+-------+
| ID | TYPE1| TYPE2 | TYPE3 | TYPE4 | TYPE5 |
+----+------+-------+-------+-------+-------+
|  1 | D    | C     |    A  |       |       |
|  2 | F    | D     |    C  |       |       |
|  3 | C    | L     |    A  |       |       |
|  4 | T    | O     |    M  |       |       |
+----+------+-------+-------+-------+-------+



+----+------+
| ID | RES  |
+----+------+
|  1 | ACD  |
|  2 | CDF  |
|  3 | ACL  |
|  4 | MOT  |
+----+------+

1 个答案:

答案 0 :(得分:1)

您正在尝试执行此操作,这极大地表明了非规范化架构。您应该考虑normalising您的架构,这将大大简化此操作。

就目前情况而言,您可以有效地(尽管非常低效)动态创建规范化数据结构,然后使用它们:

SELECT ID, GROUP_CONCAT(TYPE ORDER BY TYPE SEPARATOR '') RES FROM (
  SELECT ID, TYPE1 TYPE FROM myTable
  UNION ALL
  SELECT ID, TYPE2 FROM myTable
  UNION ALL
  SELECT ID, TYPE3 FROM myTable
) t GROUP BY ID

sqlfiddle上查看。