【问题标题】:Is possible to count alias result on mysql可以在mysql上计算别名结果
【发布时间】:2013-08-27 13:00:54
【问题描述】:

其实我的查询是这样的:

SELECT ABS(20-80) columnA , ABS(10-70) columnB ,
ABS(30-70) columnC , ABS(40-70) columnD , etc..

pb is each ABS() 实际上是一些复杂的计算,我需要添加最后一个 columnTotal 女巫是每个 ABS() 的 SUM,我想以一种方式做到这一点而不重新计算所有。我想要实现的是:

SELECT ABS(20-80) columnA , ABS(10-70) columnB ,
ABS(30-70) columnC , ABS(40-70) columnD , SUM(columnA+columnB+columnC+columnD) columnTotal 

。预期的结果如下所示:

columnA    columnB    columnC    columnD    columnTotal
  60         60          40         30          190

不知道有没有可能

【问题讨论】:

    标签: mysql sql count alias


    【解决方案1】:

    是的,在 MySQL 中你可以这样做:

    SELECT 
      @a:=ABS(40-90) AS column1, 
      @b:=ABS(50-10) AS column2, 
      @c:=ABS(100-40) AS column3, 
      @a+@b+@c as columnTotal;
    
    +---------+---------+---------+-------------+ |第 1 列 |第 2 列 |第 3 列 |栏目总数 | +---------+---------+---------+-------------+ | 50 | 40 | 60 | 150 | +---------+---------+---------+-------------+ 一组中的 1 行(0.00 秒)

    【讨论】:

      【解决方案2】:

      您可以像这样将其包裹在另一层中:

      select columnA, columnnB, columnnC, columnnD, (columnA+ columnnB+ columnnC+ columnnD) total
      from 
      (
      SELECT ABS(20-80) columnA , ABS(10-70) columnB ,
      ABS(30-70) columnC , ABS(40-70) columnD , etc..
      )
      

      【讨论】:

        【解决方案3】:
        SELECT t.*, (columnA+columnB...) as total
        FROM (
            SELECT ABS(20-80) columnA , ABS(10-70) columnB, ABS(30-70) columnC , ABS(40-70) columnD 
            ...
        ) as t
        

        【讨论】:

          【解决方案4】:

          使用派生表:

          SELECT
              columnA , columnB ,
              columnC , columnD ,
              SUM(columnA+columnB+columnC+columnD) columnTotal 
          FROM
           (
             SELECT
                 ABS(20-80) columnA , ABS(10-70) columnB ,
                 ABS(30-70) columnC , ABS(40-70) columnD 
             FROM ...
           ) AS dt
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-11-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多