前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL(联合查询、子查询、分页查询)

MySQL(联合查询、子查询、分页查询)

作者头像
全栈开发日记
发布2022-05-12 21:11:53
16.3K0
发布2022-05-12 21:11:53
举报
文章被收录于专栏:全栈开发日记全栈开发日记

目录

联合查询 子查询 分页查询

联合查询

联合查询是指将多个查询结果合并成一个结果集(二维表),通常出现在统计分析中。

语法:

代码语言:javascript
复制
查询语句1
UNION
查询语句2
UNION
...
查询语句N

注意:

1.所有查询语句的返回结果的列数必须相等

2.每列的数据类型必须一致,【查询语句1中字段列表的类型必须和查询语句2中的字段列表类型对应且一致】

代码实例:

代码语言:javascript
复制
SELECT user_id,name,sex,birthday,age FROM b_user 
UNION 
SELECT 0,'合计','','',SUM(age) FROM b_user;

子查询

所谓子查询是指嵌套在另一个SQL语句内部的查询语句。

子查询分类:

按结果及行数分:

1、 标量子查询(单行子查询:结果集只有一行一列)

2、 列子查询(多行子查询:结果集多行一列)

3、 行子查询(结果集有多行多列)

4、 表子查询(结果集有多行多列)

按出现位置分:

1、 SELECT 后面:只能出现标量子查询

2、 FROM 后面:表子查询(查询结果必须起别名)

3、 WHERE|HAVING:支持标量子查询,列子查询,行子查询

4、 EXISTS后面:支持表子查询

代码实例:

查询订单信息,并显示用户姓名

代码语言:javascript
复制
SELECT a.*,(SELECT name FROM b_user WHERE user_id=a.user_id) 
FROM b_order a;

查询所有用户信息

代码语言:javascript
复制
SELECT * FORM b_user; 
SELECT * FROM (SELECT * FROM b_user) a;

查询李四购买的订单信息

代码语言:javascript
复制
SELECT * 
FROM b_order 
WHERE user_id=(SELECT user_id FROM b_user WHERE name='李四');

关键字

代码实例:

IN子句

查询平台购买过商品的用户(查询用户表,只要用户的user_id在b_order表中,满足条件)

代码语言:javascript
复制
SELECT * 
FROM b_user 
WHERE user_id 
IN (SELECT user_id FROM b_order);

查询未在平台购买过商品的用户

代码语言:javascript
复制
SELECT * 
FROM b_user 
WHERE user_id 
NOT IN(SELECT user_id FROM b_order);

ANY|SOME

t1中有5条记录,每一行的s1去和(select s1 from t2)每一行s1去比较,只要有t1中的s1大于t2中的任意一个s1,那么当前行满足查询条件

代码语言:javascript
复制
SELECT s1 
FROM t1 
WHERE s1>ANY|SOME (SELECT s1 FROM t2);

ALL

t1中有5条记录,每一行的s1去和(select s1 from t2)每一行s1去比较,必须t1中的s1大于t2中的所有的s1,那么当前行满足查询条件

代码语言:javascript
复制
SELECT s1 FROM t1 WHERE s1 > ALL(select s1 FROM t2);

EXISTS

代码语言:javascript
复制
SELECT * 
FROM b_user 
EXISTS (SELECT * FROM b_order WHERE order_id>10);

select * from b_order where order_id>10有返回结果,执行select* from b_user;

select * from b_order where order_id>10没有返回结果,执行select* from

b_user; 返回空

分页查询

如果数据量过大(100亿),如果一次性显示10亿条数据,(100亿条数据本身从数据库中读取时慢【分库 分表】,将100亿条新闻展示在网页的过程也是很慢的)

手工分页

百度新闻、微商城、淘宝这些根据滚动条的位置来刷新数据。

滚动条分页

基础语法:

代码语言:javascript
复制
SELECT 查询字段列表 
FROM 表名 
WHERE 筛选条件 
GROUP BY 分组列表 
HAVING 筛选条件 
ORDER BY 排序列表
LIMIT offset,size;

offset:代表查询的启始索引,从0开始

size:你需要显示的条数

注意:如果offset是从0开始,可以省略

查询前2条数据

代码语言:javascript
复制
SELECT * FROM b_user LIMIT 0,2;

如果offset为0

代码语言:javascript
复制
SELECT * FROM b_user LIMIT 2;

注意:

在SQL Server中使用top关键字进行分页;所谓top 7,代表查询前7条记录。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码实例:
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档