源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

交叉表查询sql语句

  • 时间:2021-09-01 10:42 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:交叉表查询sql语句
表一:      组名      成员1id      成员2id      成员3id      示例数据:      冲锋组     1       2       3      后卫组     2       3       4      表二:      成员id      成员姓名      示例数据:      1     张三      2     李四      3     王五      4     陆二      要求结果        冲锋组     张三       李四       王五      后卫组     李四       王五       陆二  
[u]复制代码[/u] 代码如下:
--建立测试环境      Create   Table   表1(组名   varchar(10),成员1id   varchar(10),成员2id   varchar(10),成员3id   varchar(10))      --插入数据      insert   into   表1      select   '冲锋组','1','2','3'   union      select   '后卫组','2','3','4'          Create   Table   表2(成员id   varchar(10),成员姓名   varchar(10))      --插入数据      insert   into   表2      select   '1','张三'   union      select   '2','李四'   union      select   '3','王五'   union      select   '4','陆二'        --测试语句        select   a.组名,      成员1=(select   成员姓名   from   表2   b   where   a.成员1id=b.成员id),      成员1=(select   成员姓名   from   表2   b   where   a.成员2id=b.成员id),      成员1=(select   成员姓名   from   表2   b   where   a.成员3id=b.成员id)      from   表1   a             --删除测试环境      Drop   Table   表1      Drop   Table   表2      /*      组名                   成员1                 成员1                 成员1                      ----------   ----------   ----------   ----------        冲锋组                 张三                   李四                   王五      后卫组                 李四                   王五                   陆二      (所影响的行数为   2   行)      */
[u]复制代码[/u] 代码如下:
select                a.组名,              成员1   =   max(case   b.成员id   =   a.成员1id   then   b.成员姓名   end),              成员2   =   max(case   b.成员id   =   a.成员2id   then   b.成员姓名   end),              成员3   =   max(case   b.成员id   =   a.成员3id   then   b.成员姓名   end),      from                表一   a,              表二   b      group   by              a.组名
[u]复制代码[/u] 代码如下:
select                a.组名,              成员1   =   max(case   b.成员id   =   a.成员1id   then   b.成员姓名   end),              成员2   =   max(case   b.成员id   =   a.成员2id   then   b.成员姓名   end),              成员3   =   max(case   b.成员id   =   a.成员3id   then   b.成员姓名   end)      from                表一   a,              表二   b      group   by              a.组名
[u]复制代码[/u] 代码如下:
select   a.组名,                    成员1=(select   成员姓名   from   表2   b   where   a.成员1id=b.成员id),                    成员1=(select   成员姓名   from   表2   b   where   a.成员2id=b.成员id),                    成员1=(select   成员姓名   from   表2   b   where   a.成员3id=b.成员id)      from   表一   a   
[u]复制代码[/u] 代码如下:
正解是      select   表1.组名,                    (select   表1.成员姓名   from   表2   b   where   表1.成员1id=表2.成员id)   as   成员1id,                    (select   表1.成员姓名   from   表2   b   where   表1.成员2id=表2.成员id)   as   成员2id,                    (select   表1.成员姓名   from   表2   b   where   表1.成员3id=表2.成员id)   as   成员3id      from   表1,表2
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部