更新变量的值而不在mysql中打印其值

时间:2017-11-17 17:40:20

标签: mysql sql

我有一个表Employees,其中包含两列YearUserCount。 表看起来像这样

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的值?

还有其他方法比这更好吗?

2 个答案:

答案 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

请注意几件事。

  1. 初始化将移至join子句。

  2. 对表格进行排序总是很明智。如果你没有结果集排序是不可预测的,这是不好的。

答案 1 :(得分:1)

如果你可以添加一个值并在表达式中减去相同的值,它就会取消。

$(document).on("panelbeforeopen", "div[data-role='panel']", function(e,ui) {
    $.mobile.activeClickedLink = null;
});

但我怀疑为什么你觉得你需要这样做。在您不需要的查询结果中添加额外的列不应该是一个问题。您的应用程序代码不需要显示它。