为什么此查询不起作用并显示无效的列名

Why this query is not working and says Invalid Column name

SELECT ROUND(K1,2)
FROM (SELECT '5.66666' UNION ALL
      SELECT '5.77777' UNION ALL
      SELECT '5.88888' UNION ALL
      SELECT '5.99999' UNION ALL
      SELECT '6.66666' UNION ALL
      SELECT '7.66666' UNION ALL
      SELECT '8.66666' UNION ALL
      SELECT '9.66666' UNION ALL
      SELECT '9.55555' UNION ALL 
      SELECT '6.88888' AS K1) K

错误说 Invalid Column name 'K1'

为第一条记录提供列名,其余记录将使用相同的名称。

SELECT ROUND(K1,2)
FROM (SELECT '5.66666' AS K1 UNION ALL
      SELECT '5.77777' UNION ALL
      SELECT '5.88888' UNION ALL
      SELECT '5.99999' UNION ALL
      SELECT '6.66666' UNION ALL
      SELECT '7.66666' UNION ALL
      SELECT '8.66666' UNION ALL
      SELECT '9.66666' UNION ALL
      SELECT '9.55555' UNION ALL 
      SELECT '6.88888') K

union [all] 结构中的列别名来自 第一个 查询,而不是最后一个。把你的别名移到那里,你应该没问题:

SELECT ROUND(K1,2)
FROM (SELECT 5.66666 AS K1 UNION ALL -- Here!
      SELECT 5.77777 UNION ALL
      SELECT 5.88888 UNION ALL
      SELECT 5.99999 UNION ALL
      SELECT 6.66666 UNION ALL
      SELECT 7.66666 UNION ALL
      SELECT 8.66666 UNION ALL
      SELECT 9.66666 UNION ALL
      SELECT 9.55555 UNION ALL 
      SELECT 6.88888) K

为第一列第一行提供别名或为所有行提供别名 第一列:

   SELECT ROUND(K1,2)
   FROM 
   (
      SELECT '5.66666' AS K1 UNION ALL
      SELECT '5.77777' AS K1 UNION ALL
      SELECT '5.88888' AS K1 UNION ALL
      SELECT '5.99999' AS K1 UNION ALL
      SELECT '6.66666' AS K1 UNION ALL
      SELECT '7.66666' AS K1 UNION ALL
      SELECT '8.66666' AS K1 UNION ALL
      SELECT '9.66666' AS K1 UNION ALL
      SELECT '9.55555' AS K1 UNION ALL 
      SELECT '6.88888' AS K1
    ) K