| id | state |
|---|---|
| 1 | 2 |
| 1 | 1 |
| 2 | 2 |
| 3 | 2 |
现有一个需求,根据id分组,只要存在一条数据state = 1,那该id对应的state最终便是1。上表最后要达到的效果如下:
| id | state |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 2 |
其中比较关键的是使用GROUP_CONCAT函数。
case when GROUP_CONCAT(temp.state) like '%1%' then 1 else 2 end state
这个函数将两条数据以逗号的形式合并到一条数据,然后根据使用case when函数进行like捕获。最终得出上述结果。 ps:如果有其他实现方式,还请不吝赐教。