SQL中in和not in的问题
selectcount(*)fromcustomer_infowherecustcdnotin(selectcustcdfromgrade_model_infowhere...
select count(*) from customer_info
where custcd not in (
select custcd from grade_model_info where custcd = '10000'
)
在这条Sql语句中grade_model_info这张表中事实上是没有custcd这个字段的,但是这个sql语句不会报错。会正常执行。但是把select custcd from grade_model_info where custcd = '10000'单独执行的话会报错。
还有一点就是custcd = '10000'这个限定条件中的值如果在customer_info表中存在记录,查询结果会有影响
请高手说一下这是怎么回事! 展开
where custcd not in (
select custcd from grade_model_info where custcd = '10000'
)
在这条Sql语句中grade_model_info这张表中事实上是没有custcd这个字段的,但是这个sql语句不会报错。会正常执行。但是把select custcd from grade_model_info where custcd = '10000'单独执行的话会报错。
还有一点就是custcd = '10000'这个限定条件中的值如果在customer_info表中存在记录,查询结果会有影响
请高手说一下这是怎么回事! 展开
2个回答
展开全部
我重写一下你的语句你应该就明白了
select count(*) from customer_info as c
where c.custcd not in (
select c.custcd from grade_model_info where '10000'=c.custcd
)
sqlserver是支持这样的写法的,如果是外部表的条件尽量写在外部
而且内部select列不要出现外部表名,可以用表别名加以区分,如
select g.custcd from grade_model_info as g where '10000'=g.custcd
这样运行时就会提示错误了
select count(*) from customer_info as c
where c.custcd not in (
select c.custcd from grade_model_info where '10000'=c.custcd
)
sqlserver是支持这样的写法的,如果是外部表的条件尽量写在外部
而且内部select列不要出现外部表名,可以用表别名加以区分,如
select g.custcd from grade_model_info as g where '10000'=g.custcd
这样运行时就会提示错误了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询