【发布时间】:2020-09-28 07:56:41
【问题描述】:
假设我选择了这样的记录
+----+-------------------------------------------------------------------------------------
| id | groupedStatus |
+----+-------------------------------------------------------------------------------------
| 1 | received,accepted,discarded,discarded,accepted,discarded,accepted,received,received |
| 2 | accepted,discarded,received,received,received,received,received |
+----+-------------------------------------------------------------------------------------
除了上面的记录,我还想得到groupedStatus字符串中每个子字符串的出现,
例如,在第一行,出现如下:
收到:3 接受:3 丢弃:3
原始表架构
表1
ID int
表 2:
ID
Table1ID
Status enum('received','accepted','discarded')
我正在使用以下查询选择上述记录
select t1.id, group_concat(t2.status) as groupedStatus from Table1 t1 inner join Table2 t2 on t1.id=t2.table1ID group by t1.id
【问题讨论】:
-
永远不要将数据存储为逗号分隔的项目。只会给你带来很多麻烦。
-
我没有将数据存储为逗号分隔值,这是
group_concat的结果 -
@AmirSaleem:请出示您的原始数据并查询。 before 字符串聚合之后,你想要的东西会容易得多。
-
@AmirSaleem,问一个新问题! (附表数据和预期结果。)
-
我认为你在这里错过了一个技巧:-(
标签: mysql sql string group-by pivot