2009-09-14 214 views
-2

我使用多个IN运营商,在我的sql查询,其中下面给出的条款......奇怪的行为:SQL和运营商,在多个运营商

--- 
where ID in (1, 3, 234, 2332, 2123, 989) AND tag in ('wow', 'wonderful') 

但令人惊讶的结果,行为似乎是OR的键入而不是AND类型。我的意思是忽略AND运营商...

你能解释我为什么吗?

+2

是什么让你这么说?你有没有收到你没有想到的结果?这是什么样子? – 2009-09-14 08:04:34

+4

是在一个表中添加列标签和ID还是不同?查看整个查询更好。 – 2009-09-14 08:05:34

+0

谢谢X2和Mark_s它得到了解决......你的反问题给了我提示,导致它得到解决...我在查询中使用了连接表和错误地映射ID ... 再次感谢 – 2009-09-14 08:12:39

回答

1

使用SQL Server 2008

SELECT * FROM 
(
    SELECT 0 AS ID, 'wow' as Tag 
) X 
WHERE ID in (1, 3, 234, 2332, 2123, 989) AND tag in ('wow', 'wonderful') 

结果我无法重现的结果: 无记录

SELECT * FROM 
(
    SELECT 1 AS ID, 'wow' as Tag 
) X 
WHERE ID in (1, 3, 234, 2332, 2123, 989) AND tag in ('wow', 'wonderful') 

结果:

ID Tag 
1 wow 

再次检查您的代码。