我有一个表Employees
,其中包含两列Year
和UserCount
。
表看起来像这样
Year UserCount
2001 400
2002 1000
2003 2000
现在我要打印年份以及随后的两年UserCount之间的差异。
我想输出这样的东西。
Year UserCount
2001 400
2002 600
2003 1000
我想到了一个变量并用0
初始化它并在每次迭代后更新它的值。这是我提出的查询
SET @prev = 0;
select year, (UserCount - @prev) as diff, @prev := (UserCount) from Employees;
虽然我得到了不同之处,但它也添加了一个新列,@prev := (Count)
有没有办法在不打印其值的情况下更新prev
的值?
还有其他方法比这更好吗?
答案 0 :(得分:1)
您可以使用外部查询隐藏处理此差异黑客所需的列。这将从返回的结果集中删除:=
更新列。 (http://sqlfiddle.com/#!9/918a75/1/0)
select year, diff
from (
select year, (UserCount - @prev) as diff, @prev := (UserCount)
from Employees
join (select @prev:= 0) init
order by year
) subquery
请注意几件事。
初始化将移至join子句。
对表格进行排序总是很明智。如果你没有结果集排序是不可预测的,这是不好的。
答案 1 :(得分:1)
如果你可以添加一个值并在表达式中减去相同的值,它就会取消。
$(document).on("panelbeforeopen", "div[data-role='panel']", function(e,ui) {
$.mobile.activeClickedLink = null;
});
但我怀疑为什么你觉得你需要这样做。在您不需要的查询结果中添加额外的列不应该是一个问题。您的应用程序代码不需要显示它。