SQL - 在FROM子句中正确使用常量而不是表名

时间:2011-08-08 20:49:12

标签: sql sql-server database sql-server-2005 tsql

我正在使用soem代码在sql中查找两个数字的乘积。我正在关注this教程的示例。我想知道的是,当在select语句的FROM子句而不是表名中使用常量列表时,使用的正确语法是什么?

E.g。

SELECT EXP(SUM(LOG(num))) as product
FROM (VALUES (2),(3),(5),(7),(11),(13)) as NUMS(num)

此示例不断抛出错误

  

'关键字'VALUES'附近的语法不正确。'

同样,我假设这是可能的,我只是不确定正确的语法是什么。非常感谢。

4 个答案:

答案 0 :(得分:3)

该语法对SQL Server 2008+有效。您必须针对早期版本运行。

尝试为:

SELECT EXP(SUM(LOG(num))) AS product
FROM (SELECT 2 
      UNION ALL
      SELECT 3
      UNION ALL
      SELECT 5
      UNION ALL
      SELECT 7
      UNION ALL
      SELECT 11
      UNION ALL
      SELECT 13) AS NUMS(num)

答案 1 :(得分:1)

我认为你必须使用UNION

来定义你的NUMS表

如:

    SELECT EXP(SUM(LOG(NUMS.num))) as product
    FROM
    (
    select 2 as num
    UNION
    select 3
    UNION
    select 5
--you get the idea...
    ) as NUMS

答案 2 :(得分:1)

可能有一些较短的方法,但这当然有效:

SELECT EXP(SUM(LOG(num))) as product
from
(
select 2 as num
union all
select 3
union all
select 5
union all
select 7
union all
select 11
union all
select 13
) NUMS

答案 3 :(得分:0)

Table Value Constructors是SQL Server 2008的新手。如果您正在尝试SQL Server 2005,它们将无法运行。