当前位置: 代码迷 >> SQL >> 十分使用的sql语句
  详细解决方案

十分使用的sql语句

热度:105   发布时间:2016-05-05 10:10:17.0
非常使用的sql语句

1、迭代查询

??? 表结构

CREATE TABLE `product` (  `id` int(11) NOT NULL auto_increment COMMENT 'id',  `productName` varchar(100) NOT NULL COMMENT '产品名称',  `productPrice` int(11) NOT NULL COMMENT '产品价格',  PRIMARY KEY  (`id`)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

??? 测试数据

insert into `product` (`id`, `productName`, `productPrice`) values('1','产品1','23');insert into `product` (`id`, `productName`, `productPrice`) values('2','产品2','34');insert into `product` (`id`, `productName`, `productPrice`) values('3','产品3','38');insert into `product` (`id`, `productName`, `productPrice`) values('4','产品4','45');insert into `product` (`id`, `productName`, `productPrice`) values('5','产品5','78');insert into `product` (`id`, `productName`, `productPrice`) values('6','产品1','65');

???

??? 效果如图:

图1


图2

??? 从上面的查询结果可以看出,totalprice字段值的规则是从第1条记录到当前记录的totalprice之和,不过这种方式效率并不高,尤其在记录非常多的情况。

??? 从图2的查询结果分析可知,这个结果仍然是求和的操作,只是并不是对所有的记录求和,也不是分组求和,而是使用迭代的方式进行求和,求和的公式如下:当前 记录的totalprice值= 当前记录的productPrice值+ 上一条记录的totalprice值,上一条记录的totalprice值也可看成是当前记录以前所有记录的productPrice值之和。因此,可以 对每一条记录进行求和(使用sum函数),不过要求出当前记录及以前的记录的productPrice之和,如下面的SQL语句:

SELECT a.id,a.productPrice,(SELECT SUM(productPrice) FROM product b WHERE b.id <= a.id ) AS totalprice FROM product a;

?

  相关解决方案