当前位置:   article > 正文

MySQL子查询_mysql 子查询 原理

mysql 子查询 原理

MySQL子查询

子查询是指在一个SELECT语句中嵌套另一个SELECT语句
如下图片所示:

外部查询与内部查询

一个子查询会返回一个标量(单一值)、一个行、一个列或一个表(一行或多行,一列或多列),这些子查询被称为标量、列、行和表子查询

子查询的限制是其外部语句必须是以下语句之一:SELECTINSERTUPDATEDELETESETDO。还有一个限制是,目前用户不能既在一个子查询中修改一个表,又在同一个表中进行选择

WHERE中的子查询

使用comparison operators

comparison operator可以是=, >, <, >=, <=, <>

如下的例子,查询payment最高的customer:

SELECT 
    customerNumber, checkNumber, amount
FROM
    payments
WHERE
    amount = (SELECT 
            MAX(amount)
        FROM
            payments);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

使用IN 和 NOT IN

如果子查询返回的是多个值,可在WHERE中使用INNOT IN

如下的例子,查询没有ordercustomers

SELECT 
    customerName
FROM
    customers
WHERE
    customerNumber NOT IN (SELECT DISTINCT
            customerNumber
        FROM
            orders);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

FROM中的子查询

可分为独立子查询和相关子查询

EXISTS 和 NOT EXISTS

当子查询与EXISTS或NOT EXISTS运算符一起使用时,子查询返回一个布尔值为TRUE或FALSE的值。以下查询说明了与EXISTS运算符一起使用的子查询:

SELECT 
    *
FROM
    table_name
WHERE
    EXISTS( subquery );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

参考

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号