在MySQL中使用子查询和标量子查询的基本操作教程

MySQL的子查询

子查询是调用一个SELECT语句作为一个中间结果的另一个SQL查询statement.mysql支持所有格式和操作的SQL标准所要求的结果,同时也扩展了一些独特的功能。

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




SELECT * FROM文章,UID(UID在选择从用户那里状态= 1)



两个相应的表如下所示:

条条表:





用户用户表:





查询返回的结果如下所示:





在这个例子中,首先,所有状态= 1的UID是通过子查询的查询语句,和实际的查询是相似的:




SELECT * FROM文章,UID在(1,2)



MySQL的标量子查询

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

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




SELECT * FROM文章,UID =(选择UID从用户地位= 1阶)



在这个例子中,子查询语句:




选择用户状态= 1的UID,UID DESC LIMIT 1



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




SELECT * FROM文章,uid = 2



使用子查询比较

你可以使用= > = =操作符比较标量子查询的结果,和通常的子查询的位置是在比较型的右侧:




SELECT * FROM T1其中column1 =(选择最大(column2)从T2)



提示

对于一个运营商相比,子查询必须返回一个标量。唯一的例外是=可用于同时行子查询。

子查询、表的连接

在许多情况下,查询效果很相似,连接表。然而,在某些特殊情况下,使用子查询代替表是必要的。




SELECT * FROM T1其中column1 =(选择最大(column2)从T2)



下一个例子:




SELECT * FROM第T 2 =(select count(*)的文章,article.uid =)



本例试图找出用户在2篇文章中发表的所有文章记录:

条条表:





用户用户表:





查询返回的结果如下所示: