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表中存在记录,查询结果会有影响

请高手说一下这是怎么回事!
展开
 我来答
szm341
2012-09-20 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5166万
展开全部
我重写一下你的语句你应该就明白了
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
这样运行时就会提示错误了
php_fan_wen
2012-09-20
知道答主
回答量:18
采纳率:0%
帮助的人:4.2万
展开全部
整条语句 执行的话 “select custcd from grade_model_info where custcd = '10000'” 它 只是作为 “select count(*) from customer_info” 的条件存在 只会返回结果 为false或者空 所以 查询 不受影响 !
追问
但是in 里面的custcd 的值会影响到查询结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式