代码之家  ›  专栏  ›  技术社区  ›  A G

select语句总是按顺序执行/选择列?

  •  1
  • A G  · 技术社区  · 15 年前

    select语句中的所有列是否都按所列顺序被选中?

    Declare @X, @Y
    
        SELECT 
        @X = ColumnA*.25 + ColumnB*2.5,
        @Y = ColumnA*.5 + ColumnC*1.33,
        TOTAL = @X + @Y
        FROM SomeTable
    

    上面的查询可以安全使用吗?计算@x和@y之后,是否始终选择total?

    3 回复  |  直到 15 年前
        1
  •  3
  •   Quassnoi    15 年前

    不能在一个查询中混合列选择和变量分配。

    如果将总数选为变量:

    SELECT  @X = ColumnA*.25 + ColumnB*2.5,
            @Y = ColumnA*.5 + ColumnC*1.33,
            @TOTAL = @X + @Y
    FROM    SomeTable
    

    然后,是的, @total 将在之后分配 @x @y 计算。

        2
  •  2
  •   Marcelo Cantos    15 年前

    如果你打算返回一个结果集,我认为这不起作用。最好用便携方式编写:

    SELECT X, Y, X + Y AS TOTAL
      FROM (SELECT ColumnA*0.25 + ColumnB*2.5 AS X,
                   ColumnA*0.5 + ColumnC*1.33 AS Y,
              FROM SomeTable) xxx
    
        3
  •  0
  •   adolf garlic    15 年前

    将其放入公用表表达式cte中

    CTE=更易于维护/可读的查询

    http://www.4guysfromrolla.com/webtech/071906-1.shtml