【Mysql】记录一些特殊的select语句
创始人
2024-03-25 04:40:01
0

目录

    • 一.分页查询
    • 二.多表查询
    • 三.自连接
    • 四.子查询
      • 4.1单行子查询
      • 4.2多行子查询
      • 4.3临时表子查询
      • 4.4多行子查询
      • 4.5多列子查询

一.分页查询

select...limit start,rows
表示从start+1行开始取,取出rows行,start从0开始算
公式:limit 每页显示记录数*(第几页-1),每页显示记录数

SELECT* 
FROMemp 
WHEREdeptno = 20 LIMIT 0,4

二.多表查询

多表查询的条件不能少于表的个数-1, 否则会出现笛卡尔集
在这里插入图片描述
查询一:显示雇员名,雇员工资及所在部门的名字
雇员名,雇员工资 来自 emp 表
部门的名字 来自 dept 表

SELECTename,sal,dname,emp.deptno 
FROMemp,dept 
WHEREemp.deptno = dept.deptno

查询二:显示部门号为 10 的部门名、员工名和工资

SELECTename,sal,dname,emp.deptno 
FROMemp,dept 
WHEREemp.deptno = dept.deptno AND emp.deptno = 10

查询三:显示各个员工的姓名,工资,及其工资的级别
姓名,工资 来自 emp
工资级别 salgrade

SELECTename,sal,grade 
FROMemp,salgrade 
WHEREsal BETWEEN losal AND hisal;

三.自连接

在同一张表的连接查询(元素之间通过表中的某一列关联,把一张表都当做两张表来使用
),在进行查询时一般要起别名!
在这里插入图片描述
查询一:显示公司员工名字和他的上级的名字
员工名字 在 emp, 上级的名字的名字 emp
员工和上级是通过 emp 表的 mgr 列关联

SELECTworker.ename AS '职员名',boss.ename AS '上级名' 
FROMemp worker,emp boss 
WHEREworker.mgr = boss.empno;

四.子查询

子查询是指嵌入在其它sql语句中的select语句,也叫嵌套查询

4.1单行子查询

单行子查询是指只返回一行数据的子查询语句
查询一:如何显示与SMITH同一部门的所有员工?
先查出Smith的部门号,再根据查到的部门号来查询其他信息

SELECT DISTINCTename,job,sal,deptno 
FROMemp 
WHEREdeptno IN (SELECTdeptno FROMemp 
WHEREename = 'SMITH')

4.2多行子查询

多行子查询指返回多行数据的子查询使用关键字in
查询二:查询和10号部门工作相同的员工,但不包括10号部门
查询10号部门有哪些工作,再把查询结果当作子查询使用

SELECTename,deptno 
FROMemp 
WHEREjob IN ( SELECT job FROM emp WHERE deptno = 10 ) AND deptno != 10

4.3临时表子查询

将子查询当作一张临时表来使用
查询一:查询表中各个类别里,价格最高的商品
先得到各个类别中,价格最高的商品当作临时表,在针对临时表查询其他字段
在这里插入图片描述

SELECTgoods_id,ecs_goods.cat_id,goods_name,shop_price 
FROM( SELECT cat_id, MAX( shop_price ) AS max_price FROM ecs_goods GROUP BY cat_id ) temp,ecs_goods 
WHEREtemp.cat_id = ecs_goods.cat_id AND temp.max_price = ecs_goods.shop_price

注意针对临时表和原始表共存的字段要做声明,比如使用ecs_goods.cat_id来作为字段名

4.4多行子查询

查询一:查询工资比30号部门的所有员工工资高的员工的姓名、工资和部门号
使用all操作符实现
还可以使用MAX()

SELECTename,sal,deptno 
FROMemp 
WHEREsal > ALL (SELECTsal FROMemp WHEREdeptno = 30)

查询二:查询工资比30号部门其中一个员工工资高的员工的姓名、工资、部门编号
使用ANY操作符实现
也可以使用MIN()

SELECTename,sal,deptno 
FROMemp 
WHEREsal > ANY ( SELECT sal FROM emp WHERE deptno = 30 )

4.5多列子查询

(字段1,字段2…)=(select 字段1,字段2 from…)
查询一:查询和Allen部门和岗位相同的元素

SELECT * FROM emp 
WHERE 
( deptno, job )=( 
SELECT deptno, job 
FROM emp 
WHERE ename = 'ALLEN' 
) 
AND ename != 'ALLEN'

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...