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);

使用IN 和 NOT IN

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

如下的例子,查询没有ordercustomers

SELECT 
    customerName
FROM
    customers
WHERE
    customerNumber NOT IN (SELECT DISTINCT
            customerNumber
        FROM
            orders);

FROM中的子查询

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

EXISTS 和 NOT EXISTS

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

SELECT 
    *
FROM
    table_name
WHERE
    EXISTS( subquery );

参考

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值