2011-02-15 87 views
0

对不起,如果我的标题有点误导,但不完全确定如何对其进行描述。参数和值之间的SQL差异

为什么会有以下两个语句之间的差异:

SELECT * 
FROM tbl1 LEFT OUTER JOIN 
     tbl2 ON tbl1.num = tbl2.tbl1Num LEFT OUTER JOIN 
     tbl3 ON tbl2.num = tbl3.tbl2Num 
WHERE tbl2.intNum = 123 OR 123 = -1 

DECLARE @intNum int = 123 
SELECT * 
FROM tbl1 LEFT OUTER JOIN 
     tbl2 ON tbl1.num = tbl2.tbl1Num LEFT OUTER JOIN 
     tbl3 ON tbl2.num = tbl3.tbl2Num 
WHERE tbl2.intNum = @intNum OR @intNum = -1 

我们跑了上述两个查询,它实际上给了我们不同的结果?我们最终将其改为联盟来解决问题,但我真的很想明白为什么会发生这种情况。

在此先感谢!

+0

在输出结果的条款或执行结果的差异? – 2011-02-15 15:04:51

+0

当你的表格有不同的输出时,你有什么数据?你从查询中得到什么输出? – 2011-02-15 15:07:51

回答

2

你缺少参数类型:

declare @intNum int = 123