V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
MrGba2z
V2EX  ›  问与答

请教一句 SQL 语句

  •  
  •   MrGba2z · 2015-06-03 13:42:17 +08:00 · 2283 次点击
    这是一个创建于 3467 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想要得到按tag分类的查询结果, 但是tag有哪些我并不知道

    我的想法是

    先查询所有的tag, 然后循环用tag为条件查询

    因为还没学过数据库, 不太清楚是否有比较好的办法能一次性搞定?

    期望的返回结果:
    tag1: data1, data2, data3
    tag2: data1, data2, data3...
    可以数组套数组 或者字典里key为tag, value为数组
    不知道我表达清楚意思了没
    15 条回复    2015-06-03 17:11:33 +08:00
    publicID001
        1
    publicID001  
       2015-06-03 13:56:26 +08:00 via Android
    先取出所有数据然后按tag排序?
    MrGba2z
        2
    MrGba2z  
    OP
       2015-06-03 14:01:24 +08:00
    @publicID001

    这个办法应该比我的好, 起码对数据库的压力小.

    我最理想的还是能够直接按我说的那样把结果取出来(但我不确定是否能这样,所以来这里问问)
    ALeo
        3
    ALeo  
       2015-06-03 14:03:11 +08:00
    那样不是会出现1+ N 的问题。。。?
    MrGba2z
        4
    MrGba2z  
    OP
       2015-06-03 14:18:49 +08:00
    @ALeo 每个数据就只有一个tag...
    hahasong
        5
    hahasong  
       2015-06-03 14:54:20 +08:00
    自行用代码搞定,不要什么都扔给数据库。给个通常的思路,先一次查出所有数据,然后用代码做循环,重新按TAG组织一下数据
    RIcter
        6
    RIcter  
       2015-06-03 14:56:00 +08:00   ❤️ 1
    select key3,group_concat(key_one) from test group by key3;

    MrGba2z
        7
    MrGba2z  
    OP
       2015-06-03 15:35:48 +08:00
    @RIcter 菊苣么么哒 就是这种! 可惜看不出背景图是啥
    RIcter
        8
    RIcter  
       2015-06-03 15:37:20 +08:00
    @MrGba2z P站ID:46814187
    MrGba2z
        9
    MrGba2z  
    OP
       2015-06-03 15:53:20 +08:00
    @RIcter
    我又试了下不太对..
    同样的tag数据只有一条出来
    比如
    name / tag
    a 1
    b 2
    c 3
    d 2
    只会返回3条

    我想要的是
    [[(a,1)], [(b,2), (d, 2)], [(c,3)]]
    这样的
    不知可行不?
    RIcter
        10
    RIcter  
       2015-06-03 16:00:12 +08:00
    @MrGba2z MySQL 做不到这样吧..不符合范式了..=A=
    RIcter
        11
    RIcter  
       2015-06-03 16:01:02 +08:00
    你可以用 mongodb ww
    angeloce
        12
    angeloce  
       2015-06-03 16:06:27 +08:00
    其实, 按tag排序就是你要的
    MrGba2z
        13
    MrGba2z  
    OP
       2015-06-03 16:10:37 +08:00
    @RIcter
    了解了 只能代码里处理了

    @angeloce
    我还想让他们按tag自动分组,
    目前看来只能按tag排序输出,然后手动分组了
    immjun
        14
    immjun  
       2015-06-03 17:09:09 +08:00
    @RIcter 看到你用 MariaDB 做例子刚想问和 PostgreSQL 对比用哪个好 然后点进博看看到 Hacking PostgreSQL 吓了我一跳...
    RIcter
        15
    RIcter  
       2015-06-03 17:11:33 +08:00 via iPhone
    @immjun 其實我不會postgresql(
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2724 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:34 · PVG 13:34 · LAX 21:34 · JFK 00:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.