学习数据库札记五

学习数据库笔记五

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和表名,一定要记住上面这样的写法,非常有用。