日期:2014-05-17  浏览次数:20445 次

关于Sql 条件拼接的一点疑问
假如我想实现去用户信息表中查name<>'小明'并且 sex<>'男'的查询,我的想法是
select * from userTable where (name<>'小明' and sex<>'男')

但是查出来的并不是我要的效果,sql server会帮我把sql解析为
select * from userTable where (name<>'小明')and (sex<>'男')


这个结果直接不是我想要的了。

后来我换了种思路,子查询,先查出name='小明' and sex='男'的这些记录的ID,然后再去查userTable中ID not in(查到的ID),理论上是可以实现的,但是实际上我的表示俩字段联合主键的,这种思路就没法实现了啊。

最后说下我想要的东西,麻烦各位大侠了,
1:求条可以实现我想要的效果的SQL,最好是第一种思路的。
2:麻烦帮我解释下,为什么SQL会把我的SQL解析成那种样子的,那结果并不是我想要的啊。

求各路大神出现帮我解决这个问题。
sql?server

------解决方案--------------------
(name<>'小明' Or sex<>'男') And Not(name<>'小明' And sex<>'男')