问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

some嵌套查询的用法

发布网友 发布时间:2022-04-09 16:23

我来回答

1个回答

热心网友 时间:2022-04-09 17:52

MySQl从4.11版后已经完全支持嵌套查询了,那么下面举些简单的嵌套查询的例子吧(源程序来自MySQL User Manual):
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进行集合的匹配。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ipad mini2怎么看小说 关于ipadmini的几点疑惑 苹果平板图书阅读软件推荐推荐一个苹果可以用的免费看小说app 风冷无霜为什么噪音大 华为matepad11多大尺寸的 applewatch可以发微信语音吗? 人类基因组组成 仅从染色体照片(黑白非显带的)能否区别X染色体和C组染色体? ...车子加速不上来是什么原因,节气门清洗过了也不行? 换了变数箱油洗了节气门 提速慢了 停下来起步根本没力气 帝豪GL发动机声音时间久了会变大吗 吉利帝豪gl车机怎样设置启动车自动播放音乐 【车主点评:谈谈我使用吉利汽车帝豪GL的感受】 竭尽所能给你更高规格的待遇 实测2020款吉利帝豪GL 2018款帝豪gl熄火的时候怎么有种声音 帝豪gl中控异响怎么解决 买的称心,用的放心,帝豪GL30000公里用车分享! 帝豪GL音响效果好吗 2019吉利帝豪gl新车发动机声音很大。冷启动后有一点点暴震 还有点哒哒哒的声音 刚提的帝豪gl2018手动版,用车半年后发动机声音很大怎么办? 吉利帝豪GL音效怎么样 吉利帝豪GL右前车门音响不怎么响喇叭没有问题 是怎么回事 直击试驾现场,带你领略不一样的2020款帝豪GL 2020款帝豪GL车载音响播放格式 u盘的内容在电脑上显示不出来是怎么回事 为什么使用Android模拟器登陆微信,微信会提醒我如果继续使用模拟器登陆会导致封号呢? 这种橘子的品种是什么? 我用电脑上的安卓手机模拟器登录微信,需要身份验证后就放弃了,现在该怎么处理 这个是什么品型的桔树? 迈腾esp故障灯亮起了,打火后又没有了怎么回事? 惠普电脑怎么安装打印机? 数学网校哪个好? 蛋糕塌腰还能吃吗 蛋糕坯未过保质期就发生变质是怎么回事 蛋糕坯子可以加热吃吗 - 信息提示 mixfold30倍变焦是数字变焦? nova630倍变焦自己晃动 烤出来的生日蛋糕坯没完全放凉,中间还是热的,可以放冰箱冷藏吗 手机能放大30倍吗? 劲爆体育在线直播请赐教 iphone用什么app看劲爆体育直播? 劲爆体育的NBA《赛事直播》 10年2月10日劲爆体育现场直播 劲爆体育直播哪个最快 网易云音乐如何查看自己的电台节目是否过审? 大蒜用热水煮,捣成蒜泥会变绿吗? 网易云音乐怎么不写简介上传电台节目 腌制糖蒜需要把大蒜用开水烫一下吗? 腌大蒜是不是要用开水烫一下?