MySQL的一个一条SQL语句查询所有不同种类产品的一部分结果实例的SQL语句
for&ever 2009-08-24
考虑如下场景:
有一个产品表(product),里面有很多产品记录。表格有一个产品类型的字段 prodType,用来标示不同的产品类型。产品类型的种类是一定的,例如,总共有10种不同的产品类型。
要求:
通过一条SQL 语句,按着产品的ID进行排序,分别查询出这10种不同类型的产品的最新的5个。
例如,如下的表的记录:
1 prodTypeA
2 prodTypeB
3 prodTypeA
4 prodTypeA
5 prodTypeA
6 prodTypeB
7 prodTypeA
8 prodTypeA
9 prodTypeA
那么就需要通过一条SQL 语句,查询出如下的结果集:
9 prodTypeA
8 prodTypeA
7 prodTypeA
5 prodTypeA
4 prodTypeA
6 prodTypeB
2 prodTypeB
今天和 xinxinran 讨论后,得到结果如下:::
可以通过如下的SQL查询得到:
SELECT id , prodType FROM product a WHERE ( SELECT count( 1 ) FROM product b WHERE a.prodType = b.prodType AND b.id >= a.id ) <=5
那么,如果要获取最老的5条记录呢?
很简单,修改 b.id >= a.id 为 b.id <= a.id 即可,如下:
SELECT id , prodType FROM product a WHERE ( SELECT count( 1 ) FROM product b WHERE a.prodType = b.prodType AND b.id <= a.id ) <=5
@forandever for&ever 2009-08-24