如何并排显示同一个表中的数据

 尹琢抵 发布于 2023-02-12 19:44

假设我在mysql中有一个表(称为get),如下所示:

ID S Num
00 1 506
00 2 620
01 1 562
01 2 564
02 1 548
02 2 484
03 1 488
03 2 895

我试图以这种格式得到它:

ID S1  S2
00 506 620
01 562 564
02 548 484
03 488 895

到目前为止我有这个,但它给了我一个错误:

select id,d.S1,c.S2 from 
(select S as S1 from get where S=1)d inner join  
(select s as S2 from get where S=2)c using (id);

我仍然不太确定加入,但这似乎有道理.

编辑:S有时只能有1个值,在这些时间内,此值将为S1

1 个回答
  • 您可以使用自联接,换句话说,您可以在桌面上加入两次,类似于您的开始方式.既然您声明S=1将始终存在,那么您可以使用以下查询:

    select t1.id,
      t1.num S1,
      t2.num S2
    from yourtable t1
    left join yourtable t2
      on t1.id = t2.id
      and t2.s = 2
    where t1.s = 1;
    

    请参阅SQL Fiddle with Demo.S=1即使S=2表中不存在,在表上使用LEFT JOIN也将返回值为的所有行.

    您还可以使用带有CASE表达式的聚合函数来获取结果:

    select
      id,
      sum(case when s = 1 then num end) S1,
      sum(case when s = 2 then num end) S2
    from yourtable
    group by id;
    

    请参阅SQL Fiddle with Demo

    2023-02-12 19:45 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有