• mysql一个字段的多个值连表查询


    众所周知,MySQL是关系型数据库,我们在处理关系的方式可以通过外键,也可以通过用一个字段去存储另一张表的唯一值,下面说一下我当前的场景

    table1:user表

    table2:team表

    id team_name team_owner team_leaders
    自增主键 团队1 zhangsan lisi,wangwu

    其中,team表是这样的结构,首先从业务方面:team_owner最多1个人,而team_leaders字段是不确定的,有可能无leader,有可能1个,有可能多个,那么也可以看得出来,对于这个角色我用的是字符串类型,这个时候,我想要让这张表与user表通过join查询匹配对应的人名字,怎么让team_leaders字段的姓名匹配出来呢??

    select t.id,group_concat(u.name) from team as t inner join user as u on find_in_set(u.username,t.team_leaders)>0 group by t.id
    id group_concat(u.name)
    1 李四,王五

    但是,这里遇到的一个问题是:find_in_set是获取到位置,按获取到的位置排序,再group concat,就是如果在user表里,wangwu的id是1,lisi的id是2,,那么查出来的结果就是这样的:它会以user表的索引去排序,有可能会颠倒我team表里这个字段的顺序

    id  group_concat(u.name)
     1  王五,李四

     这里需要再去排序以下

    select t.id,group_concat(u.name order by find_in_set(u.username,t.team_leaders)) from team as t inner join user as u on find_in_set(u.username,t.team_leaders)>0 group by t.id
  • 相关阅读:
    HLG 1522 子序列的和【队列的应用】
    POJ 3273 Monthly Expense【二分】
    HDU 4004 The Frog's Games 【二分】
    POJ 2001 Shortest Prefixes【第一棵字典树】
    POJ 2823 Sliding Window【单调对列经典题目】
    HDU 1969 Pie 【二分】
    POJ 3125 Printer Queue【暴力模拟】
    POJ 3250 Bad Hair Day【单调栈】
    字典树【模板】
    验证码 Code
  • 原文地址:https://www.cnblogs.com/lutt/p/16171329.html
Copyright © 2020-2023  润新知