select "batchId", case when type::integer=1 then array_agg("bizId") else null end as "uid" , case when type::integer=2 then array_agg("bizId") else null end as "fid" from V2EX group by "batchId",type;
select "batchId", array_remove(array_agg(case when type::integer=1 then "bizId" end ),NULL)as "uid" , array_remove(array_agg(case when type::integer=2 then "bizId" end),NULL )as "fid" from V2EX group by "batchId";
@Cbdy 你贴第一个是给 MySQL 写 test cases 的时候需遵循的规范,第二个是该 blog 作者所在团队的规范。自己开发使用 MySQL 的时候,遵守自己团队规范即可,MySQL 本身可以支持驼峰命名的表名和字段名,innodb 存储引擎也不会把表名当文件名保存,不会触发大小写敏感的问题。
可能对于专业的来说太简单了,但我作为一个前端,你这个 sql 着实让我感兴趣了啊。研究了好一会 ``` SELECT batchId, group_concat( CASE WHEN type = 1 THEN bizId ELSE null END) as "uid", group_concat( CASE WHEN type = 2 THEN bizId ELSE null END) as "typeid" FROM test GROUP BY batchId;
```
第 1 页 / 共 1 页
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。