本文实例分析了MySQL嵌套查询。分享给大家供大家参考,具体如下:
MySQl从4.11版后已经完全支持嵌套查询了,那么下面举些简单的嵌套查询的例子吧(源程序来自MySQL User Manual):
1. SELECT语句的子查询
语法:
复制代码 代码如下:SELECT ... FROM (subquery) AS name ...
先创建一个表:
?123CREATE TABLE t1 (s1INT, s2CHAR(5), s3FLOAT);INSERT INTO t1VALUES (1,'1',1.0);INSERT INTO t1VALUES (2,'2',2.0);
我们就可以进行以下的嵌套查询了:
?123SELECT sb1,sb2,sb3FROM (SELECT s1AS sb1, s2AS sb2, s3*2AS sb3FROM t1)AS sbWHERE sb1 > 1;
结果是: 2, '2', 4.0.
我们知道下面语句是不会得到正确结果的,因为对经过Group by排序的集合进行求均值是不能得到正确答案的:
复制代码 代码如下:SELECT AVG(SUM(column1)) FROM t1 GROUP BY column1
所以我们可以通过下面的嵌套查询实现同样的效果:
?123SELECT AVG(sum_column1)FROM (SELECT SUM(column1)AS sum_column1FROM t1GROUP BY column1)AS t1;
2.行的子查询(Row Subquery)
看下面的例子:
复制代码 代码如下:SELECT * FROM t1 WHERE ROW(1,2)