• 注册
  • 赞助本站

    • 支付宝
    • 微信
    • QQ

    感谢一直支持本站的所有人!

    • 查看作者
    • 5-4:由[NOT] IN/EXISTS引发的子查询

      一.  [NOT] IN

      除了上一节我们讲到的子查询外,还有另一种子查询:[NOT] IN的子查询,语法结构为:

      operand comparison_operator[NOT] IN(subquery)

      =ANY 运算符与IN等效

      != ALL 或ALL运算符与NOT IN等效

      以=ANY举例:

      mysql> SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price = ANY(SELECT goods_price FROM tdb_goods WHERE goods_cate ='超级本');
      +----------+---------------------------------+-------------+
      | goods_id | goods_name                      | goods_price |
      +----------+---------------------------------+-------------+
      |        5 | X240(20ALA0EYCD) 12.5英寸超极本        |    4999.000 |
      |        6 | U330P 13.3英寸超极本                   |    4299.000 |
      |        7 | SVP13226SCB 13.3英寸触控超极本            |    7999.000 |
      +----------+---------------------------------+-------------+
      3 rows in set (0.00 sec)
      mysql> SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price IN (SELECT goods_price FROM tdb_goods WHERE goods_cate ='超级本');
      +----------+---------------------------------+-------------+
      | goods_id | goods_name                      | goods_price |
      +----------+---------------------------------+-------------+
      |        5 | X240(20ALA0EYCD) 12.5英寸超极本        |    4999.000 |
      |        6 | U330P 13.3英寸超极本                   |    4299.000 |
      |        7 | SVP13226SCB 13.3英寸触控超极本            |    7999.000 |
      +----------+---------------------------------+-------------+
      3 rows in set (0.00 sec)

      可以看到,=ANY 运算符与IN等效,结果都是一样的

      二.  [NOT] EXISTS

      除了前面提到的两个子查询外,还有一个极少用到的子查询:[NOT] EXISTS

      如果子查询返回任何行,EXISTS将返回TRUE;否则为FALSE

    • 0
    • 0
    • 0
    • 1.3k
    • 请登录之后再进行评论

      登录
    • 单栏布局 侧栏位置: