嗨,这是mySql中的sql语句。
任何正文都可以为以下内容建议最佳的mySql语句。
SELECT A.id,A.salary,A.salary + IFNULL((SELECT SUM(B.salary)FROM test_salary B WHERE B.id< A.id ORDER BY id DESC),0)AS tot FROM test_salary A
此查询运行了多少次? - 可用行数为表+ 1。
我想要这样的结果: id salary tot 1 200 200 2 300 500 3 400 900 4 500 1400 5 600 2000 6 700 2700 7 800 3500 8 900 4400
答案 0 :(得分:0)
目前尚不清楚你要在这里做什么,但以下内容至少在语法上是正确的。
SELECT A.id, A.salary,
A.salary+IFNULL((SELECT SUM(B.salary) FROM test_salary B WHERE B.id = a.id),0)
from a
根据您的编辑,我可以看到您的查询有效。子查询将针对主查询中遇到的每一行运行。另一种方法是使用变量
select a.id,a.salary,
@tot := @tot + a.salary as tot
from test_salary a, (select @tot:=0) t;
我建议你将你的查询与性能进行比较。