如何设计查询将两个表合并

wangyouqi 2006-11-09 10:29:16

中国学生表1
姓名 分数
张三 90
李四 80

美国学生表
name score
JIM 70
TOM 60

要求查询后结果 合并两表数据 可以做到么

姓名 分数
张三 90
李四 80
JIM 70
TOM 60
...全文
328 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
OracleRoob 2006-11-19
  • 打赏
  • 举报
回复


一、如果是同一台机器上,可以使用如下两种方式访问另一个MDB:

(1)其中表名是在db2中的表名
SELECT * from 表名 in 'C:\db2.mdb'

(2)其中表名是在db2中的表名
select * from [;database=C:\db2.mdb].表名


追加到本机的另一个MDB中:

insert into 目标MDB的表名(字段列表) in 'C:\db2.mdb' select 字段列表 from 当前MDB的表名

insert into [;database=C:\db2.mdb].目标MDB的表名(字段列表) select 字段列表 from 当前MDB的表名




二、如果访问另一台机器上的MDB,可以使用链接表、传递查询、或直接用SQL:


(1)使用链接表时,建议使用文件数据源创建链接表,与机器无关,拷贝到别的机器上可以直接使用,无须再手工或用代码创建ODBC。

三种数据源比较:

文件DSN
ODBC文件数据源允许用户连接到数据提供程序。文件DSN可以由安装了相同驱动程序的用户共享。

用户DSN
ODBC用户数据源存储了如何与指定数据提供程序连接的信息。用户数据源只对当前用户可见,而且只能用于当前机器上。

系统DSN
ODBC系统数据源村除了如何与指定数据提供程序连接的信息。系统数据源对当前机器上的所有用户可见,包括NT服务。


(2)传递查询,需要将连接串保存到传递查询中,但效率比链接表要高。


(3)使用Jet-SQL语句访问:

可以直接用机器名访问,如:

SELECT * FROM [;DATABASE=\\Server\共享文档\Test.MDB].表名


也可以先将另一台机器上的共享目录映射成本地磁盘,就和访问本地的MDB一样了。

假设另一台机器IP为192.168.0.1,机器名为Server,共享的文件夹名字为“共享目录”,创建映射成本地的磁盘(如:Z)后

SELECT * FROM [;DATABASE=Z:\Test.MDB].表名
wangyouqi 2006-11-19
  • 打赏
  • 举报
回复
如果是跨库怎么办呢

中国学生表 在 数据库1
美国学生表 在 数据库2
WiseDragon 2006-11-10
  • 打赏
  • 举报
回复
来晚了
早起晚睡 2006-11-10
  • 打赏
  • 举报
回复
来晚了
proglovercn 2006-11-10
  • 打赏
  • 举报
回复
想保持结果集没有重复的使用:UNION
保持重复(如果存在的话)使用:UNION ALL
OracleRoob 2006-11-10
  • 打赏
  • 举报
回复
select 姓名,分数 from 中国学生表1
union all
select name as 姓名,score as 分数 from 美国学生表

--union all不合并重复行
select * from A
union all
select * from B


--union 合并重复行
select * from A
union
select * from B
「已注销」 2006-11-09
  • 打赏
  • 举报
回复
union,求并集。
点点星灯 2006-11-09
  • 打赏
  • 举报
回复
select 姓名,分数 from 中国学生表1
union all
select [姓名]=name,[分数]=score from 美国学生表

34,593

社区成员

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

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