代码之家  ›  专栏  ›  技术社区  ›  Anthony

MySQL-在第二个动态列中引用动态列

  •  1
  • Anthony  · 技术社区  · 15 年前

    我有一张这样的桌子:

    user | test_score
      a  |  50
      b  |  60
    

    我需要一个查询结果,它有一个列,是测试分数的1.5倍,然后是与原始结果的差值。结果将是:

    user | test_score | adjusted_test_score | test_score_diff
      a  |  50        |            75       |   25
      b  |  60        |            90       |   30
    

    我尝试的问题是:

     SELECT
     user AS user,
     test_score AS test_score,
     (test_score * 1.5) AS adjusted_test_score,
     (adjusted_test_score - test_score) AS test_score_diff
    

    返回一个错误,“调整后的测试分数”列不存在。

    有没有一种方法可以在不进行连接的情况下引用此列?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Xint0    15 年前

    尝试:

    SELECT user, test_score, adjusted_test_score,
        (adjusted_test_score - test_score) AS test_score_diff
    FROM (
        SELECT user, test_score, (test_score * 1.5) AS adjusted_test_score
        FROM source_table
    )
    

    或者你也可以这样做:

    SELECT user, test_score, (test_score * 1.5) AS adjusted_test_score,
        ((test_score * 1.5) - test_score) AS test_score_diff
    FROM source_table
    
        2
  •  1
  •   extraplanetary    15 年前

    为什么不重复一遍呢?

    选择 用户作为用户, 测试分数作为测试分数, (测试分数*1.5)作为调整后的测试分数, ((测试分数*1.5)-测试分数)作为测试分数