2011-08-08 18 views
1

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

E.g.

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

这个例子不断抛出错误

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

再次,我假设这是可能的,我只是不知道什么是正确的语法。非常感谢。

回答

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) 
+0

谢谢乔和其他人一样,我忘了提及,我与SQL Server 2005工作。 – kingrichard2005

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 
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 
相关问题