问题求解!

sonysce 2005-08-31 11:01:46
有A,B两张表,两张表结构都是一样的,但不知道两张表的字段名称和类型.两张表的数据行是不一致的.
如:A表有10行,B表有20行,B表的数据包含A表的数据,那么我想取出B表另外的10行数据.请高手指点!
...全文
68 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivianfdlpw 2005-09-01
  • 打赏
  • 举报
回复
--创建测试环境
create table A
(
ID int,
Name varchar(10)
)
create table B
(
ID int,
Name varchar(10)
)
insert A
select 1,'AAA' union
select 2,'BBB'
insert B
select 1,'AAA' union
select 2,'BBB' union
select 3,'CCC' union
select 4,'DDD'

--测试
declare @sql varchar(1000),@col varchar(10)
select @sql=isnull(@sql,'')+' and A.['+name+']=B.['+name+']',
@col=name
from syscolumns where id=object_id('A')
select @sql='select B.* from B left join A on '+stuff(@sql,1,4,'')+' where A.['+@col+'] is null'
exec(@sql)

--删除测试环境
drop table A,B

--结果
/*
ID Name
----------- ----------
3.00 CCC
4.00 DDD
*/
vivianfdlpw 2005-09-01
  • 打赏
  • 举报
回复
declare @sql varchar(8000),@col varchar(10)
select @sql=isnull(@sql,'')+' and A.['+name+']=B.['+name+']',
@col=name
from syscolumns where id=object_id('A')
select @sql='select B.* from B left join A on '+stuff(@sql,1,4,'')+' where A.['+@col+'] is null'
exec(@sql)
冷箫轻笛 2005-09-01
  • 打赏
  • 举报
回复
有困难
楼主不妨说说自己想实现什么
没有表结构为什么还要做这个查询来?
wgsasd311 2005-09-01
  • 打赏
  • 举报
回复
楼上说的楼主也会吧,楼主的意思可能是通过编程实现,你在编程里不可能说打开查询分析器的。
MorningTea 2005-09-01
  • 打赏
  • 举报
回复
但不知道两张表的字段名称和类型.
---这个你select * from a
select * from b不就可以看到他们的字段名称吗?

你要查找类型,
select column_name,data_type from information_schema.columns
where table_name = 'a' or table_name = 'b'就可以知道他们的名称类型

你先看看结构再找方法,我们都不知道你的表结构,也不好给你建议!
不过这个问题的解答,很多旧帖子就问过啦
找关于重复纪录即可得到解答
wgsasd311 2005-08-31
  • 打赏
  • 举报
回复
比较复杂,先要找出是否有主鍵,如果有主鍵就好办,没有的话就很难办。

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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