15.数据的子查询操作

1. 子查询

  • 描述:出现在其他语句后面的select语句称为子查询或内查询,外部查询称为主查询或外查询
  • 分类:
    • 按结果集的行列数不同划分
      • 标量子查询:结果集一行一列
      • 列子查询:结果集一列多行
      • 行子查询:结果集一行多列
      • 表子查询:结果集多行多列
    • 按出现位置不同划分
      • select子查询:标量子查询
      • from子查询:表子查询
      • where和having子查询:标量子查询、列子查询、行子查询
      • exists子查询:表子查询
  • 特点:
    1. 子查询放在小括号内
    2. 子查询一般放在条件右侧
    3. 标量子查询一般搭配单行操作符(>,<,>=,<=,!=,=,<>,<=>)使用,列子查询一般搭配多行操作符(in,any|some,all)使用
    4. 子查询的执行优先于主查询,主查询的条件用到子查询的结果集

2. SELECT子查询------标量子查询

SELECT (SELECT COUNT(*) FROM `bill`);

3. FROM子查询-----表子查询

SELECT t1.`pk_id`,t1.`username` FROM (SELECT `pk_id`,`username`,`password` FROM `user`) t1;

4. WHERE和HAVING子查询------标量子查询

# 查询订单表支付金额大于平均支付金额的产品名称、产品描述、订单价格
SELECT 
	`b_name` 产品名称,
	`b_desc` 产品描述,
	`b_price` 订单价格 
FROM 
	`bill` 
WHERE 
	`b_price` > (SELECT AVG(`b_price`) FROM `bill`);

5. WHERE和HAVING子查询------列子查询

SELECT 
	`b_name`,
	`b_price` 
FROM 
	`bill` 
WHERE 
	`b_price` IN (SELECT `b_pric` FROM `bill` WHERE `b_price` > 20000);

6. WHERE和HAVING子查询------行子查询

SELECT 
	`b_name`,
	`b_price` 
FROM 
	`bill` 
WHERE 
	(`b_name`,`b_price`) IN (SELECT `b_name`,`b_price` FROM `bill `WHERE `b_price` > 20000);

7. EXISTS子查询------表子查询

SELECT EXISTS(SELECT * FROM `bill`);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值