MySQL的嵌套查询
来源:互联网 发布:js cleartimeout 无效 编辑:程序博客网 时间:2024/05/22 03:25
1. SELECT语句的子查询
语法: SELECT ... FROM (subquery) AS name ...
先创建一个表:
CREATE TABLE t1 (s1 INT, s2 CHAR(5), s3 FLOAT);
INSERT INTO t1 VALUES (1,'1',1.0);
INSERT INTO t1 VALUES (2,'2',2.0);
我们就可以进行以下的嵌套查询了:
SELECT sb1,sb2,sb3
FROM (SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM t1) AS sb
WHERE sb1 > 1;
结果是: 2, '2', 4.0
.
我们知道下面语句是不会得到正确结果的,因为对经过Group by排序的集合进行求均值是不能得到正确答案的:
SELECT AVG(SUM(column1)) FROM t1 GROUP BY column1
所以我们可以通过下面的嵌套查询实现同样的效果:
SELECT AVG(sum_column1)
FROM (SELECT SUM(column1) AS sum_column1
FROM t1 GROUP BY column1) AS t1;
2.行的子查询(Row Subquery)
看下面的例子:
SELECT * FROM t1 WHERE ROW(1,2) = (SELECT column1, column2 FROM t2);
这个查询是返回column1等于column2的结果行。Row函数中的1和2相当于构造参数。想必Blogjava上的同志对这些应该比较清楚,也不去详细介绍了。
3.使用Exist和Not Exist参数
这里的Exist和Not Exist用途及用法和在其他没有什么大的区别,简单举几个范例好了:
范例一: SELECT DISTINCT store_type FROM Stores
WHERE EXISTS (SELECT * FROM Cities_Stores
WHERE Cities_Stores.store_type = Stores.store_type);
范例二: SELECT DISTINCT store_type FROM Stores
WHERE NOT EXISTS (SELECT * FROM Cities_Stores
WHERE Cities_Stores.store_type = Stores.store_type);
范例三: 这个例子中嵌套使用了Not Exist语法,稍微注意一下:
SELECT DISTINCT store_type FROM Stores S1
WHERE NOT EXISTS (
SELECT * FROM Cities WHERE NOT EXISTS (
SELECT * FROM Cities_Stores
WHERE Cities_Stores.city = Cities.city
AND Cities_Stores.store_type = Stores.store_type));
4.条件关联关系查询
SELECT column1 FROM t1 AS x
WHERE x.column1 = (SELECT column1 FROM t2 AS x
WHERE x.column1 = (SELECT column1 FROM t3
WHERE x.column2 = t3.column1));
跟其他数据库做法是一样的。
5.其他使用方法和注意
除了上面这些还有很多,其他的参考参考
SELECT (SELECT s1 FROM t2) FROM t1;
SELECT (SELECT s2 FROM t1);
支持子查询的语法有:SELECT,INSERT,UPDATE,DELETE,SET和DO。
子查询可以使用任何普通查询中使用的关键词:如DINSTINCT,GROUP BY,LIMIT,ORDER BY,UNION,ALL,UNION ALL等。可以使用<,>, <=, >=, =, <>运算符进行比较,也可以使用ANY ,IN和SOME进行集合的匹配。
- MySQL 的嵌套查询
- MySQL的嵌套查询
- MySQL的嵌套查询
- MySQL的嵌套查询
- Mysql的嵌套查询方法
- mysql中有外键的嵌套查询
- MySQL 的复合查询或者嵌套查询
- 关于MySQL嵌套查询的问题
- mysql 删除嵌套查询的替代方式
- MySQL嵌套查询
- mysql嵌套关联查询
- MySQL嵌套查询
- MYSQL嵌套查询
- mysql嵌套语句查询
- mysql 嵌套查询
- MySQL嵌套查询实例
- mysql嵌套查询
- MySQL嵌套查询总结
- Unity3d优化
- 你能不能像打游戏一样干工作?
- pig简单应用(转载)
- Android视图绘制流程完全解析,带你一步步深入了解View(二)
- 图像处理之双边滤波效果(Bilateral Filtering for Gray and Color Image)
- MySQL的嵌套查询
- 检查ORACLE表空间使用状况
- 守护进程
- The Linux Kernel's VFS Layer
- 程序员技术练级攻略
- 查看Tomcat版本
- Android开发之旅一 解决ScrollView自动滚动到底部问题
- think in java interview-高级开发人员面试宝典(五)
- 创建一个日期对象, 日期对象可传参数