为什么此嵌套选择会产生错误

时间:2014-02-12 20:54:35

标签: sql sql-server stored-procedures

我在sql server中得到一个“Column BarMapping多次指定错误”。我无法弄清楚为什么。下面是我的代码:

SELECT @FooCount= COUNT(*) FROM 
(SELECT * FROM Download_Table dl
LEFT JOIN  @BarMapping sm
ON sm.cccID=dl.cccID  
WHERE DATEPART(hh, GETDATE())=DATEPART(hh, dl.DTS) AND sm.Store=73) errors

2 个答案:

答案 0 :(得分:2)

select *从不同的表中获取相同的字段名称。而你正在子查询中使用它。为什么不这样做:

SELECT @FooCount = COUNT(*)
FROM Download_Table dl LEFT JOIN 
     @BarMapping sm
     ON sm.cccID=dl.cccID  AND sm.Store = 73
WHERE DATEPART(HOUR, GETDATE()) = DATEPART(HOUR, dl.DTS);

您根本不需要子查询。

答案 1 :(得分:1)

看起来你要加入的表(Download_Table和存储过程BarMapping的结果)都有一个公共列,我猜是BarMapping导致问题或混淆产生错误。因此,通过使用表和列名称或一个简单的修复将更改Count(*)到Count(column_name)以使其工作