1.查询的五种子句是有先后顺序的,
先后顺序分别是:
where,group by,having,order by,limit
2.使用group by时要小心,
因为查询的列中的内容第一次出现当成代表,后面只换group by后字段中的内容,
而不是group by后字段中的内容就不会变。如:
select goods_name,cat_id,max(shop_price) from goods group by cat_id;这条语句就是错误的。goods_name只显示第一次查询到的内容。
select * from goods group by cat_id;取出栏目分组后,每个栏目中第一次出现列的属性。
3.查询的列当成变量来理解
查询的结果当成一张新表来理解
select goods_id,cat_id,goods_name,shop_price from goods order by cat_id,shop_price desc;把这整条语句的结果当成一张新表
查询每个栏目中价格最高的商品:
select * from (select goods_id,cat_id,goods_name,shop_price from goods order by cat_id,shop_price desc) as tmp group by cat_id;
原文地址:http://1154179272.blog.51cto.com/10217799/1653247