为什么此查询不起作用并显示无效的列名
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
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