SQL SERVER2000中差异查询的问题,请高手进来看看。

jinhailv 2014-03-18 01:06:07
现有表A和表B,其中
表A为:
Aid(列名)
1001
1002
1003
1004
1005

表B为:
Aid(列名)
1001
1004

想查询出表A和表B中列Aid中不同的记录,也就是表A--B,得到记录1002,1003,1005三条记录,
我用的SQL语句是:select A.aid from A,B where A.aid<>B.aid,可查出的结果不对。
请高手帮看看,多谢了。
...全文
100 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2014-03-18
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author  :DBA_HuangZJ(发粪涂墙)
-- Date    :2014-03-18 13:14:00
-- Version:
--      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
--	Apr  2 2010 15:48:46 
--	Copyright (c) Microsoft Corporation
--	Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[A]
if object_id('[A]') is not null drop table [A]
go 
create table [A]([Aid] int)
insert [A]
select 1001 union all
select 1002 union all
select 1003 union all
select 1004 union all
select 1005
--> 测试数据[B]
if object_id('[B]') is not null drop table [B]
go 
create table [B]([Aid] int)
insert [B]
select 1001 union all
select 1004
--------------生成数据--------------------------



select * from [A] WHERE aid NOT IN (SELECT aid FROM b)

SELECT a.* 
FROM a LEFT JOIN b ON a.aid=b.aid
WHERE b.aid IS NULL 

SELECT * FROM a WHERE not EXISTS (SELECT 1 FROM b WHERE a.aid=b.aid)
----------------结果----------------------------
/* 
Aid
-----------
1002
1003
1005

(3 row(s) affected)

Aid
-----------
1002
1003
1005

(3 row(s) affected)

Aid
-----------
1002
1003
1005

*/
LongRui888 2014-03-18
  • 打赏
  • 举报
回复
这样也行:
select A.aid from A 
where a.aid not in (select B.aid from B where b.aid is not null)
發糞塗牆 2014-03-18
  • 打赏
  • 举报
回复
select *from a where aid not in (select aid from b)
LongRui888 2014-03-18
  • 打赏
  • 举报
回复
试试这个:
select A.aid from A 
where not exists(select 1 from B where A.aid=B.aid)

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧