zoukankan      html  css  js  c++  java
  • MySQL 6.子查询

    子查询:

    • 子查询指嵌套在查询内部,且必须始终出现在圆括号内
    • 子查询可以包含多个关键字或条件,如DISTINCT、GROUP BY 、ORDER BY、LIMIT、函数等
    • 子查询的外层查询可以是我们所知道的所有的SQL命令的统称。

    一下Demo基于此表结构,具体信息就不做展示:

    1 CREATE TABLE tdb_goods(
    2     goods_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    3     goods_name VARCHAR(150) NOT NULL,
    4     goods_cate VARCHAR(40) NOT NULL,
    5     brand_name VARCHAR(40) NOT NULL,
    6     goods_price DECIMAL(15,3) UNSIGNED NOT NULL DEFAULT 0,
    7     is_show BOOLEAN NOT NULL DEFAULT 1,
    8     is_saleoff BOOLEAN NOT NULL DEFAULT 0
    9 );
    View Code

    SQL又叫结构化查询语言

    下面例子中SELECT * FROM table1称为Outer Query/ Out Statement

    SELECT col2 FROM table2 称为 SubQuery

    1 SELECT * FROM tdb_goods WHERE brand_name = (SELECT brand_name FROM tdb_goods);

    子查询可以返回标量、一行、一列或子查询

     子查询产生的情况比较多但总共分为三类

    • 1.使用比较运算符的子查询(=、>、<、>=、<=、!=、<>、<=>)

    ROUND(AVG(goods_price),2):求goods_price的平均数,并将其四舍五入保留小数点的两位

    1 SELECT goods_id, goods_name, goods_price FROM tdb_goods WHERE goods_price >= (SELECT ROUND(AVG(goods_price),2) FROM tdb_goods);
    子查询Demo

    ANY、SOME、ALL:ANY和SOME等价相当于任何一个即可,ALL则是所有的

    Demo:查找出价格大于所有超级本的商品

    1 SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price > ALL (SELECT goods_price FROM tdb_goods WHERE goods_cate='超级本');
    • 2.使用NOT IN 与 IN 的子查询

    =ANY运算符与IN等效

    !=ALL与NOT IN 等效

    • 3.使用EXISTS产生的子查询(如果子查询返回任何行,EXISTS将返回TRUE,否则返回FALSE)此种方法不常用
  • 相关阅读:
    新创建django项目,但网页打不开127.0.0.1:8000
    列表计算整数出现次数,并以次数大小重新排序
    Appium+python自动化
    笔试考试系统--学生管理加载和添加
    笔试考试系统--MVC实现登录
    笔试考试系统--配置EF;运行单元测试
    笔试考试系统--项目搭建及用Log4Net记录日志
    笔试考试系统--第一天需求分析及数据库设计
    笔试考试系统--引言
    不用加减乘除做加法,求2个数的平均数
  • 原文地址:https://www.cnblogs.com/gzc911/p/4945658.html
Copyright © 2011-2022 走看看