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)此种方法不常用
  • 相关阅读:
    RTTI机制
    QT 实现 QTabWidget 的多个Tab宽度之和 等于 TabWidget 的宽度
    安装QT
    给QT 程序的EXE文件添加图标
    OceanBase使用libeasy原理源码分析:服务器端
    libev 源码浅析
    [转载]CAP理论十二年回顾:"规则"变了
    replication 技术摘要
    函数调用和函数返回 栈变化情况
    The Secret To 10 Million Concurrent Connections The Kernel Is The Problem, Not The Solution
  • 原文地址:https://www.cnblogs.com/gzc911/p/4945658.html
Copyright © 2011-2022 走看看