mysql标量子查询变成左连接,在MySQL中使用子查询和标量子查询的基本操作教程...

MySQL 子查询

子查询是将一个 SELECT 语句的查询结果作为中间结果,供另一个 SQL 语句调用。MySQL 支持 SQL 标准要求的所有子查询格式和操作,也扩展了特有的几种特性。

子查询没有固定的语法,一个子查询的例子如下:

?

对应的两个数据表如下:

article 文章表:

15232624D-0.png

user 用户表:

15232A5R-1.png

查询返回结果如下所示:

15232C012-2.png

在该例子中,首先通过子查询语句查询出所有 status=1 的 uid,实际的查询类似于:

?

MySQL 标量子查询

标量子查询是指子查询返回的是单一值的标量,如一个数字或一个字符串,也是子查询中最简单的返回形式。

一个标量子查询的例子如下:

?

在该例子中,子查询语句:

?

返回的是单一的数字(如 2),实际的查询语句为:

?

使用子查询进行比较

可以使用 = > < >= <= <> 这些操作符对子查询的标量结果进行比较,通常子查询的位置在比较式的右侧:

?

提示

对于采用这些操作符之一进行的比较,子查询必须返回一个标量。唯一的例外是 = 可以和行子查询同时使用。

子查询与表连接

在很多情况下,子查询的效果与 JOIN 表连接很类似,但一些特殊情况下,是必须用子查询而不能用表连接的,如:

?

以及下例:

?

该例子要找出用户发表了 2 篇文章的所有文章记录。对应的两个数据表如下:

article 文章表:

1523264243-3.png

user 用户表:

15232C551-4.png

查询返回结果如下所示:

1523263591-5.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值