首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个SQL语句的有关问题,郁闷加奇怪

2012-03-09 
请教大家一个SQL语句的问题,郁闷加奇怪现在有两个表A和B,均是以ID为主键,B表中有AID字段对应A.ID。现在A表

请教大家一个SQL语句的问题,郁闷加奇怪
现在有两个表A和B,均是以ID为主键,B表中有AID字段对应A.ID。
现在A表中有2400条记录,B表中有2000条记录,通过查询DISTINCT   AID,可知有2000条。
通过下列语句查询时,情况如下:
SELECT   *   FROM   A   WHERE   ID   IN   (SELECT   AID   FROM   B)   结果为2000;
SELECT   *   FROM   A   WHERE   ID   NOT   IN   (SELECT   AID   FROM   B   )   结果为   0
SELECT   *   FROM   A   WHERE   ID   NOT   IN   (SELECT   ID   FROM   A   WHERE   ID   IN   (SELECT   AID   FROM   B))       结果为400
SELECT   *   FROM   A   WHERE   NOT   EXISTS   (SELECT   *   FROM   B   WHERE   A.ID   =B.AID)   结果为400

呵呵,我奇怪的是第二条语句为什么会查询出0来,而不是400,请各位大大指教。谢谢

[解决办法]
SELECT * FROM A WHERE NOT EXISTS (SELECT * FROM B WHERE A.ID =B.AID)
是推荐做法
[解决办法]
如果表A中ID含有NULL的數據,那麼你第二條語句就會得到那樣的結果,但是第三條應該也會是0才對。
[解决办法]
挺奇怪我觉得不可能吧,
看你两个字段编码规则是否一样!!!

[解决办法]
你试试在里面加入Ltrim 与rtrim,这种情况是有可能的,你的数据是导进去的,以前的数据类型为char ,

热点排行