where子查询:把内层查询的结果,作为外层查询的比较条件。
#查询出最新的商品,id最大为最新 select goods_id , goods_name from goods order by goods_id desc limit 1; 结果为goods_id为33的行 #如果不使用order by 可以使用: select goods_id, goods_name from goods where goods_id = 33; //结果是正确的,但是因为把id写死了,所以在数据扩展方面不对。因此可以进行合并,先取id再去整个行 select max<goods_id> from goods; select goods_id, goods_name from goods where goods_id = <select max<goods_id> from goods;>; #查出每个栏目下最贵的商品 select goods_id ,goods_name ,cat_id,shop_price from goods where shop_price in < select max<shop_price> from goods group by cat_id>; #查询每个栏目下最新的产品,id号最大为最新 select goods_id , goods_name,cat_id from where cat_id in <select max<goods_id> from goods group by cat_id>; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ From型
From子查询:把内层的查询结果当做外层的临时表,供外层sql再次查询
#用from查出每个栏目下最新的商品 select * from <select goods_id ,goods_name,cat_id from goods order by cat_id asc,goods_price desc> as tmp group by cat_id; #用where和from子查询得到了挂科两门或者两门以上平均的同学。 select name, avg(mark) from test where name in (select name from (select name,count(*) as hk from test where mark<=60 group by name having hk>=2 ) as tmp) group by name; //最内层select,得到挂科在2门以及两门以上的同学的名字和hk列(hk为挂科总数) //往外一层的select,是得到最内层查询的表的那列name列 //最外层select是根据两次select筛选出了符合条件的name,通过这个名字输出相应的平均分。 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------exists查询:
exists:把外层的查询结果拿到内层,看内层查询是否成立
#查询有商品的栏目: #我们有两个表格,一个为category是cat_id,cat_name,cat_name;一个为goods表,包含goods_name,goods_id,cat_id,shop_price列 #当我们要查询在category表中,那些个cat_id在goods中也存在。 select cat_id ,cat_name from category where exists<select * from goods.cat_id = category.cat_id>; //相当于把category表中的每个行取出,去goods表中找是否了两个cat_id一样的,一样该category中的行就要,否则就不要---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总结:
