小白求大佬帮我看下这条 sql 怎么写 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
qwa123
V2EX    程序员

小白求大佬帮我看下这条 sql 怎么写

  •  
  •   qwa123 2019-02-16 18:48:44 +08:00 3157 次点击
    这是一个创建于 2509 天前的主题,其中的信息可能已经有所发展或是发生改变。
    15 条回复    2019-02-18 00:28:51 +08:00
    qwa123
        1
    qwa123  
    OP
       2019-02-16 19:05:32 +08:00
    有人吗...
    yuankui
        2
    yuankui  
       2019-02-16 19:29:51 +08:00   1
    group by + group_concat.

    兄弟,听我一句劝,伸手党在 V2EX 是混不下去的,好好打一下基础,提一点对大家有价值的问题。
    keyfunc
        3
    keyfunc  
       2019-02-16 20:12:18 +08:00
    作业自己做系列
    azh7138m
        4
    azh7138m  
       2019-02-16 20:26:29 +08:00 via Android
    楼主微博名字好评
    2L 正解
    Cbdy
        5
    Cbdy  
       2019-02-16 20:29:14 +08:00 via Android
    MySQL 不要用驼峰
    GuangXiN
        6
    GuangXiN  
       2019-02-16 20:30:59 +08:00 via Android
    用驼峰也没啥问题
    newlife
        8
    newlife  
       2019-02-16 23:48:58 +08:00
    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;

    result:

    "batchId","uid","fid"
    "1", "['uid1', 'uid2']",NULL
    "3", NULL, "['fid3']"
    "1", NULL, "['fid1', 'fid2']"
    "2", "['uid3']", NULL

    这个和楼主的要求还不符,求解答,,,如何合并第一和第三项?我用的 postgre
    easylee
        9
    easylee  
       2019-02-17 00:00:15 +08:00   2
    @yuankui 楼主发帖态度挺诚恳的,应该是实在不会才发帖询问的。

    好好的论坛,大家为何不对新手友善点。
    newlife
        10
    newlife  
       2019-02-17 00:31:43 +08:00
    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";

    result:

    "3" "{}" "{fid3}"
    "2" "{uid3}" "{}"
    "1" "{uid1,uid2}" "{fid1,fid2}"

    这次对了,还有别的写法么?
    GuangXiN
        11
    GuangXiN  
       2019-02-17 16:33:59 +08:00
    @Cbdy 你贴第一个是给 MySQL 写 test cases 的时候需遵循的规范,第二个是该 blog 作者所在团队的规范。自己开发使用 MySQL 的时候,遵守自己团队规范即可,MySQL 本身可以支持驼峰命名的表名和字段名,innodb 存储引擎也不会把表名当文件名保存,不会触发大小写敏感的问题。
    Cbdy
        12
    Cbdy  
       2019-02-17 16:47:29 +08:00
    @GuangXiN
    这不是技术上的,这是规约上的。在实践中,MySQL 甚至可以用中文作为列名但很少有人这么做
    我问过很多 DBA,他们建议不要使用驼峰。出于“最小惊讶原则”,选用主流的规约是好的。所以我给出这个建议
    simple2025
        13
    simple2025  
       2019-02-17 18:38:57 +08:00
    工作几年 sql 只会简单的 sql 了
    GuangXiN
        14
    GuangXiN  
       2019-02-17 19:59:43 +08:00
    @Cbdy 这个看你们怎么用 MySQL,我厂有几个库是给产品和运营用的,里面有大量中文字段名的表和视图
    pupilGradeSix
        15
    pupilGradeSix  
       2019-02-18 00:28:51 +08:00
    可能对于专业的来说太简单了,但我作为一个前端,你这个 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;

    ```
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     941 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 22:34 PVG 06:34 LAX 14:34 JFK 17:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86