我有一用户表:结构如下:
A表
userID userName userPwd
1 abc 3535
2 bbc 2663
3 ddb 3463
4 ews 37574
5 xccd 5wwyw
6 wet 34634
7 4667 3463B表
userID userNumber userS
4667 001 xd
bbc 005 e
ddb 004 fds
ews 0045 wyr
我现在想把A表的所有值全选出来,并且把B表里的对应userID的userNumber值查询出来!
查询结果也要生成如下的结果:主键:userIDuserID userName userPwd userNumber
1 abc 3535 Null
2 bbc 2663 005
3 ddb 3463 004
4 ews 37574 0045
5 xccd 5wwyw Null
6 wet 34634 Null
7 4667 3463 Null
A表
userID userName userPwd
1 abc 3535
2 bbc 2663
3 ddb 3463
4 ews 37574
5 xccd 5wwyw
6 wet 34634
7 4667 3463B表
userID userNumber userS
4667 001 xd
bbc 005 e
ddb 004 fds
ews 0045 wyr
我现在想把A表的所有值全选出来,并且把B表里的对应userID的userNumber值查询出来!
查询结果也要生成如下的结果:主键:userIDuserID userName userPwd userNumber
1 abc 3535 Null
2 bbc 2663 005
3 ddb 3463 004
4 ews 37574 0045
5 xccd 5wwyw Null
6 wet 34634 Null
7 4667 3463 Null
select a.*,b.userNumber
from a
left join b on a.userName=b.UserID--这里的楼主是否把列名搞名了;数据应该是userID对应..
insert into A values(1 , 'abc' , '3535')
insert into A values(2 , 'bbc' , '2663')
insert into A values(3 , 'ddb' , '3463')
insert into A values(4 , 'ews' , '37574')
insert into A values(5 , 'xccd', '5wwyw')
insert into A values(6 , 'wet' , '34634')
insert into A values(7 , '4667', '3463')
create table B(userID varchar(10),userNumber varchar(10),userS varchar(10))
insert into B values('4667', '001' , 'xd')
insert into B values('bbc' , '005' , 'e')
insert into B values('ddb' , '004' , 'fds')
insert into B values('ews' , '0045', 'wyr')
goselect a.* , b.userNumber from a left join b on a.userName = b.userIDdrop table A , B /*
userID userName userPwd userNumber
----------- ---------- ---------- ----------
1 abc 3535 NULL
2 bbc 2663 005
3 ddb 3463 004
4 ews 37574 0045
5 xccd 5wwyw NULL
6 wet 34634 NULL
7 4667 3463 001(所影响的行数为 7 行)
*/
select a.* , b.userNumber from A库..a a left join B库..b on a.userName = b.userID----------------------------------------------------------------------------------------
如果是不同机器,需要先链接.
不同服务器数据库之间的数据操作--创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例
select * from ITSV.数据库名.dbo.表名 --导入示例
select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset --查询示例
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
select *from 本地表 --更新本地表
update b
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
--查询
select *
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
--把本地表导入远程表
insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset
SELECT *
FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名
select * from 本地表 select a.* , b.userNumber from A机器.A库.dbo.a a left join B机器.B库.dbo.b on a.userName = b.userID
select a.* , b.userNumber from A机器.A库..a a left join A机器.B库..b on a.userName = b.userID
掌握left join, right join,full join inner join
就行了
create table A(userID int,userName varchar(10),userPwd varchar(10))
insert into A values(1,'abc','3535')
insert into A values(2,'bbc','2663')
insert into A values(3,'ddb','3463')
insert into A values(4,'ews','37574')
insert into A values(5,'xccd','5wwyw')
insert into A values(6,'wet','34634')
insert into A values(7,'4667','3463')
create table B(userID varchar(10),userNumber varchar(10),userS varchar(10))
insert into B values('4667','001','xd')
insert into B values('bbc','005','e')
insert into B values('ddb','004','fds')
insert into B values('ews','0045','wyr')select a.userID,a.UserName,UserPwd,b.userNumber from A a left join B b on a.userName=b.userID
from a
left join b on a.userName=b.UserID
建议楼主看看inner join , left join ,right join 三种连接方式,是很重要的!