VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1367|回复: 6

请教一个简单的SQL语句写法,谢谢~

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-2-7 12:00:01 | 显示全部楼层 |阅读模式
A表:

发出地   接收地
南京     上海
上海     北京
.        .
.        .
.        .

b表
1   上海
2   南京
3   北京


现在要显示:

发出地   接收地
2     1
1     3
.   .
.   .
.   .
回复

使用道具 举报

0

主题

126

帖子

73.00

积分

新手上路

Rank: 1

积分
73.00
发表于 2020-3-28 10:45:02 | 显示全部楼层
select B.地区ID AS 发出地,C.地区ID AS 接收地
FROM A表 A LEFT JOIN b表 B ON A.发出地=B.地名
LEFT JOIN b表 C ON A.接收地=C.地名
回复

使用道具 举报

0

主题

114

帖子

69.00

积分

新手上路

Rank: 1

积分
69.00
发表于 2020-3-28 12:00:01 | 显示全部楼层
update table1 set 发出地=b.id from table2 b  where 发出地=b.地区
update table1 set 接收地=b.id from table2 b  where 接收地=b.地区
select  * from table1
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-3-28 16:15:01 | 显示全部楼层
create table A(发出地   nvarchar(10), 接收地 nvarchar(10))
insert A select '南京',     '上海'
union all select '上海',     '北京'

create table B(id int, col nvarchar(10))
insert B select 1,   '上海'
union all select 2,   '南京'
union all select 3,   '北京'

select 发出地=tmpA.id, 接收地=tmpB.id from A
left join B as tmpA  on A.发出地=tmpA.col
left join B as tmpB on A.接收地=tmpB.col

--result
发出地         接收地         
----------- -----------
2           1
1           3

(2 row(s) affected)
回复

使用道具 举报

0

主题

88

帖子

55.00

积分

新手上路

Rank: 1

积分
55.00
发表于 2020-3-28 21:00:01 | 显示全部楼层
select (select id from b表 where name = a.发出地) '发出地', (select id from b表 where name = a.接收地) '接收地'  from A表
回复

使用道具 举报

0

主题

49

帖子

35.00

积分

新手上路

Rank: 1

积分
35.00
发表于 2020-3-28 22:00:02 | 显示全部楼层
select t1.id as 发出地 , t2.id as 接收地
from a inner join b t1 on a.发出地 = t1.名称
       inner join b t2 on a.接收地 = t2.名称
回复

使用道具 举报

0

主题

11

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-3-31 23:45:01 | 显示全部楼层
--使用自定义函数
create table a(出发地 varchar(10),接收地 varchar(10))
insert into a
select '北京','南京'
union all select '南京','上海'
union all select '上海','北京'
go
create table b(id int ,name varchar(10))
insert into b
select 1 , '上海'
union all select
2,   '南京'
union all select
3   ,'北京'
go
create function getid(@name varchar(10))
returns int
as
begin
declare @id int
select @id=id from b where name=@name
return @id
end
go
select dbo.getid(出发地) as 出发地,dbo.getid(接收地) as 接收地 from a

drop function getid
drop table a
drop table b

--结果
出发地  接收地
3        2
2        1
1        3
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表