为什么没有数据呢?
1、select * from SM_Sent_SM_List where sysaccountid not in (select serialno from mdao_sys_account)
2、select * from SM_Received_SM_List where pad3 not in (select userappend from mdao_sys_account)
上面是两个子查询,其中SM_Sent_SM_List表中的sysaccountid 引用mdao_sys_account表中的serialno 字段,这两个字段都是int型的,但是它们之间没有建立主外键关系,查询条件就是当SM_Sent_SM_List 表sysaccountid字段中的值不能在mdao_sys_account表的serialno字段找到相等的值时候查询SM_Sent_SM_List 表的记录,这个查询没有问题;
第二个查询和第一个条件类似,其中SM_Received_SM_List表中的pad3 引用mdao_sys_account表中的userappend 字段,这两个字段都是varchar型的,它们之间也没有建立主外键关系,也是查询当SM_Received_SM_List 表中pad3 字段值不能在mdao_sys_account表的userappend字段找到相等的值时候查询SM_Received_SM_List 表的记录,但是为什么查询结果总是0条记录呢,SM_Received_SM_List 表中存在符合查询条件的数据的
有知道的吗?帮忙指点一下,这两个查询条件都是类似的,为什么第二个查不到记录呢,它们之间唯一的不同就是数据类型了,一个是int型一个是varchar型,难道varchar型不能这样查吗?希望大家都指点指点,谢谢了......
------解决方案--------------------try this,
SQL code
select *
from SM_Received_SM_List
where ltrim(rtrim(pad3))
not in
(select ltrim(rtrim(userappend)) from mdao_sys_account)
------解决方案--------------------
去左右两边空格
------解决方案--------------------
select * from SM_Received_SM_List where pad3 not in (select userappend from mdao_sys_account WHERE userappend IS NOT NULL)
------解决方案--------------------
因为有null。
SQL code
--这样你是得不到结果的
declare @t table (col int)
insert into @t
select 1 union all
select 2 union all
select 3 union all
select 4 union all
select null
declare @t1 table (col int)
insert into @t1
select 4 union all
select 5 union all
select 6 union all
select 7 union all
select null
select * from @t1 where col not in (select * from @t)