SQL 语句 UPDATE 套 SELECT 一层套一层

现在遇到多条录入的记录,需要把多条汇集成一笔;实际情况就是会存在多笔似重复的记录,记录中的某值需要积累后再去掉重复只保留最后一条,即最后一条的中统计的是求和。

  1. 从思路上讲所谓的最后一条,就是进行一次排序 order by id desc LIMIT 1 (  id  倒排序 只取一条 )  得到最后一条的ID 。

  2.  UPDATE 这一条的相关的值,通过 SUM( ) 可以对要统计的值进行求和。

  3.  错误代码: 1093  You can't specify target table 'test' for update in FROM clause  ...  如果直接在UPDATE 中直接嵌套SELECT 时将出现1093 错误;解决方法很扭曲:需要在SELECT 的查询集之外再套一层SELECT 而且一定要AS 命名一个别名。相当于查询结果来自于另一个查询结果(自己说着都绕)


留着代码自己参考:                

UPDATE test SET up = 1 , DataVar = ( 
SELECT * FROM (
   SELECT SUM(test.`DataVar`) FROM test WHERE DATE(test.`AddDate`) = DATE( NOW() ) AND test.`up` = 0
   ) AS sumvar
) WHERE id =( SELECT DDD.id FROM (  SELECT * FROM test WHERE  DATE(test.`AddDate`)= DATE( NOW() )  ORDER BY id DESC LIMIT 1 )  AS DDD  );

DELETE FROM test WHERE DATE(test.`AddDate`)= DATE( NOW() )  AND up <> 1;