学习数据库札记五
一
where 型子查询
内层查询结果充当外层查询条件
1.查询最新的商品
步骤a ) select max(goods_id) from goods; 这是一条动态的语句,怎么添加都会是最新的,它查出了最新的一列goods_id
步骤b ) 查询最新的商品的整行信息,需要拿上面的语句作为条件
select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods);
步骤c ) 现在的结果就是"goods_id"为最新的那行的记录
*遇到问题要会分解,一步步做就能解出
2.查询出每个栏目下最新的商品
步骤a ) select max(goods_id) from goods group by cat_id; 查出每个栏目下最新的商品ID
步骤b ) 以上面查出的id为条件,接着查
select * from goods where goods_id in (select max(goods_id) from goods group by cat_id); 要用In,因为不只一个条件
from型子查询
查询出的结果集可以当成一张表来看
平时我们from后跟的都是一张表,from型子查询这种情况,可以把整个查询当成一张表
(通常我们查询出的结果只是在内存中的一个结果集,而非在硬盘上的内容,可以用having来查询出它)
一条查询语句,用括号括住,起个别名,它就成为一张“新”的临时表了,如
(select * from goods order by cat_id asc,goods_id desc) as temp 这样就把查询结果变成了新的temp表 这个技巧很有用!
用这个临时表时,
select goods_id,cat_id,goods_name from (select * from goods order by cat_id asc,goods_id desc) as temp group by cat_id;
临时表只需要在你的select语句外加括号,写个as和表名,一定要记住上面这样的写法,非常有用。