遇到的问题:

现在利用SQL语句查询得到三个结果集,每一个结果集是两列,具体为排名序号与对应的名字,如下表一。但是现在需要将这三个结果集拼接成为一个表,并且只有一个排名序号。

排名 姓名
1 张三
2 李四

利用SQL语句实现:

SELECT rownum, MAX(post1) AS post1,MAX(post2) AS post2,MAX(post3) AS post3
FROM
(SELECT @rownum1 := @rownum1 + 1 AS rownum, firstname AS post1,'' AS post2,'' AS post3
FROM
(SELECT firstname
FROM
exam_main a,
exam_rel_user b,
account c,
core_dept d
WHERE a.`id` = b.`exam_id`
AND b.`user_id` = c.`user_id`
AND c.`dept_id` = d.`id`
AND c.`position` IN (
'01010101',
'01010102',
'01010104'
)
ORDER BY b.score DESC,
b.last_attempt_date ASC) aa,
(SELECT
@rownum1 := 0) bb

UNION ALL

SELECT @rownum2 := @rownum2 + 1 AS rownum, '' AS post1,firstname AS post2, '' AS post3
FROM
(SELECT
firstname
FROM
exam_main a,
exam_rel_user b,
account c,
core_dept d
WHERE a.`id` = b.`exam_id`
AND b.`user_id` = c.`user_id`
AND c.`dept_id` = d.`id`
AND c.`position` IN (
'01010201',
'01010202',
'01010204'
)
ORDER BY b.`score` DESC,
b.`last_attempt_date` ASC) aa,
(SELECT
@rownum2 := 0) bb

union all

SELECT @rownum3 := @rownum3 + 1 AS rownum,'' as post1, '' as post2, firstname as post3  //这里的两个单引号分别代表两个空值,也就是把post1与post2值设为空,最后也就是把第一列与第二列的设为空的一列。
from
(SELECT
firstname
FROM
exam_main a,
exam_rel_user b,
account c,
core_dept d
WHERE a.`id` = b.`exam_id`
AND b.`user_id` = c.`user_id`
AND c.`dept_id` = d.`id`
AND c.`position` IN ('01010203', '01010206')
ORDER BY b.`score` DESC,
b.`last_attempt_date` ASC) aa,
(SELECT
@rownum3 := 0) bb

) cc

/* where rownum = 1*/
group by rownum

注:

1.这里面涉及四个表exam_main a,  exam_rel_user b,  account c,  core_dept d ,其中考试记录表exam_main中的id为考试结果表exam_rel_user的exam_id外键,考试结果表中user_id外键为人员表中user_id,人员表中dept_id外键为core_dept部门表中的id。

2.每个结果集看作是一个表,三个结果集用 union all 连接,最后将三个结果集又看做一个表。

3.用SQL语句产生排名序号利用的是在结果集(当做一个表)之外添加查询.如下:

SELECT @rownum := @rownum + 1 AS rownum,'' as post1, '' as post2, firstname as post3
 FROM   (结果集)aa

(SELECT @rownum3 := 0) bb

此处勿忘在最后的括号外添加别名,否则会出错。

转载于:https://www.cnblogs.com/Klose-AK47/p/5799618.html

MySQL之SQL语句实现将三个查询结果集拼接成一个表相关推荐

  1. MySQL高级SQL语句(终章)

    目录 一:通配符 1.1查询名字是有开头的记录 1.2查询名字里是贝和摩中间有一个字符的记录 1.3查看贝后面3个字符的名字记录 1.4通配符%和_结合使用 二:子查询 2.1相同表查询 2.2不同表 ...

  2. mysql数据库sql语句大全

    mysql sql语句大全 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql se ...

  3. Effective MySQL之SQL语句最优化--索引

    1 两个索引取并集组合 -- 执行命令: ALTER TABLE album ADD INDEX name_release (name,first_released); EXPLAIN SELECT ...

  4. mysql基本SQL语句

    这篇文章主要介绍了Mysql数据库之sql基本语句以及作用,还有数据库.数据表等常见操作技巧,需要的朋友可以参考下 mysql基本SQL语句 1.常见命令 mysql -u root -p # 连接数 ...

  5. MySQL 使用SQL语句实现 增删改查

    MySQL 使用SQL语句实现 增删改查 环境准备:MySQL,navicat 一.增加数据 语法: INSERT INTO 表名(字段1,字段2,字段3...) VALUES(值1,值2,值3... ...

  6. MYSQL补充SQL语句

    MYSQL补充SQL语句 一.order by按关键字排序 ​ 对指定单个或多个字段作为条件进行排序 ​ 现在我们有一张表,我们可以通过对id和age作为条件进行排序(注意:排序要从左到右进行运行) ...

  7. 【数据库】MySQL的sql语句详解

    目录 MySQL之sql语句 一, INSERT语句 insert语句的使用: 1,给表中一次性插入一条记录 2,给表中一次性插入多条记录 二, REPLACE语句 REPLACE语句的使用 1,语法 ...

  8. MySQL中SQL语句——DQL(数据查询语句)

    前言: 首先对于数据库有一定的了解,会对于Mysql的学习有一定的帮助: 数据库主要分为 DB(数据库),DBMS(数据库管理系统),SQL(结构化查询语言,用于和DBMS通信的语言):这篇要讲的DQ ...

  9. MysQL高级SQL语句|进阶语句|select语句(一)【图文细解】

    MysQL高级SQL语句 一.SQL语句的概述 SELECT DISTINCT WHERE AND.OR IN BETWEEN 通配符 LIKE ORDER BY GROUP BY HAVING 二. ...

  10. MYSQL常用SQL语句分享

    转自:微点阅读  https://www.weidianyuedu.com SQL分类: DDL-----数据定义语言(CREATE--创建,ALTER--修改. DROP--删除表,DECLARE- ...

最新文章

  1. 【顶会资源汇总】2020最新视觉描述生成文献大列表
  2. eclipse 工程复制
  3. Markdown拾遗
  4. python and or 优先级
  5. 80070583类不存在_结合JVM源码谈Java类加载器
  6. java中VO、PO、DTO 、DO、POJO、BO、TO
  7. SemVLP 单流和双流Transformer哪个好?阿里:我全都要!提出带可插拔模块的Transformer结构...
  8. python3ubunton安装视频_ubuntu16.04安装python3的包报错
  9. 黄金分割圆怎么画matlab,黄金分割线画法图解(操作技巧)
  10. 计算机网络路由器方面的论文,简析计算机网络问题中路由器故障的论文
  11. 简约好看侧边栏(HTML、CSS)
  12. 从 json 文件到炫酷动画 - Lottie 实现思路和源码分析
  13. 大屏scroll滚动轴样式
  14. SIFT特征原理与理解
  15. 关于地统计的一些知识点
  16. Sakai的安装使用
  17. atob解码图片base64时候报错
  18. 逍遥安卓 出现android,解决逍遥安卓模拟器一直卡在99%的方法
  19. “第一股”争夺战:每日优鲜、叮咚买菜及美菜网谁能杀出重围?
  20. 基于iSensor的MT9M001C12STM传感器调试总结

热门文章

  1. w7网络计算机共享,网络共享设置 win7局域网共享设置最简单教程
  2. 精讲!!! Web服务器基础与http协议
  3. iphone 文件夹连接服务器 百度云,iPhone与电脑共享文件夹
  4. 第七届山东理工大学ACM趣味编程循环赛 Round#1 sdut4109 玄黄的字符串
  5. 线性代数笔记4.4(二)非齐次线性方程组解的结构
  6. html5读取加速度传感器,一文读懂加速度传感器
  7. opencv的学习与人脸情绪识别项目(一)
  8. Delphi XE10.4字体字号对应的Font Size的点或像素换算
  9. PS-第五天-图层样式
  10. ipad触屏失控出现乱跳