子查询
- 子查询可以理解为,在一个SQL语句A(SELECT、INSERT、UPDATE等)中嵌入一个查询语句B,作为执行的条件或查询的数据源(代替FROM后的数据表),那么B就是子查询语句。
(一)查询例子
查询商品类别为“零食”的商品ID、名称、价格及销售量
SELECT gdID,gdName,gdPrice,gdSaleQty FROM goods WHERE tid=2;
SELECT tid FROM goodstype WHERE tName=“零食”;合在一起
SELECT gdID,gdName,gdPrice,gdSaleQty FROM goods WHERE tid=(SELECT tid FROM goodstype WHERE tName=“零食”)在线商城数据库中查询库存超过1000的商品类别
SELECT tID FROM goods WHERE gdQuantity>1000;
SELECT tName FROM goodstype WHERE tID in (1,2);合在一起
SELECT tName FROM goodstype WHERE tID in (SELECT tID FROM goods WHERE gdQuantity>1000);查询销售量最大的商品tid是属于哪类商品(合并式)
SELECT tName FROM goodstype WHERE tID=(SELECT tID FROM goods ORDER BY gdSaleQty DESC LIMIT 1);
(二)查询练习
插入连接studb数据库
stucourse
stuinfo
stumarks
利用子查询查询选修了课程的学生的基本信息。
SELECT * FROM stuinfo WHERE stuno in(SELECT stuno FROM stumarks);利用子查询查询没有选修课程的学生的基本信息。
SELECT DISTINCT * FROM stuinfo WHERE stuno not in(SELECT stuno FROM stumarks);查询选修了“高等数学”这门课的学生的基本信息。
SELECT * FROM stuinfo WHERE stuno in(SELECT stuno FROM stumarks WHERE cno=0005);利用子查询查询成绩最高的选课记录。
SELECT cname FROM stucourse WHERE cno=(SELECT cno FROM stumarks ORDER BY stuscore DESC LIMIT 1);
欢迎指正!