首页 > 解决方案 > 使用 VALUE 制作临时表

问题描述

以下查询中虚拟函数 abc123() 的目的是什么?它们都可以工作,但我不明白对虚拟功能的需求。

我试图删除它,但总是有语法错误。

  SELECT MAX(NumbersTable) AS NumbersTable
   FROM ( VALUES (1), (3), (2) ) AS abc123(NumbersTable)

   SELECT TOP 1 NumbersTable
   FROM ( VALUES (1), (3), (2) ) AS abc123(NumbersTable)
   ORDER BY NumbersTable DESC

我希望结果是 3,这就是我得到的。

标签: sqlsql-server

解决方案


它不是一个函数。它定义了由values. 是abc123表别名。NumbersTable是列的名称。

如果你运行:

SELECT *
FROM ( VALUES (1), (3), (2) ) AS abc123(NumbersTable)

你会看见:

NumbersTable
1
2
3

因为NumbersTable是列的名称。你也可以写:

SELECT abc123.NumbersTable
FROM ( VALUES (1), (3), (2) ) AS abc123(NumbersTable)

推荐阅读