请问一个简单的SQL语句写法,多谢
发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
请教一个简单的SQL语句写法,谢谢~
A表:
发出地 接收地
南京 上海
上海 北京
. .
. .
. .
b表
1 上海
2 南京
3 北京
现在要显示:
发出地 接收地
2 1
1 3
. .
. .
. .
------解决方案--------------------
select B.地区ID AS 发出地,C.地区ID AS 接收地
FROM A表 A LEFT JOIN b表 B ON A.发出地=B.地名
LEFT JOIN b表 C ON A.接收地=C.地名
------解决方案--------------------
update table1 set 发出地=b.id from table2 b where 发出地=b.地区
update table1 set 接收地=b.id from table2 b where 接收地=b.地区
select * from table1
------解决方案--------------------
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)
------解决方案--------------------
select (select id from b表 where name = a.发出地) '发出地 ', (select id from b表 where name = a.接收地) '接收地 ' from A表
------解决方案--------------------
select t1.id as 发出地 , t2.id as 接收地
from a inner join b t1 on a.发出地 = t1.名称
inner join b t2 on a.接收地 = t2.名称
------解决方案--------------------
--使用自定义函数
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
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
从 Excel 导入到 SQL 的大数据效率问题
导入数据量:10W。
环境:Sql server 2008 R2
导入用时 29分钟。
每条执行语句:
IF EXIS...
-
链接服务器 删除时,提示 提供程序内存不足
链接服务器连一个oracle 数据库
表 tb 其中一个列是 blob
现在删除 tb 的一行...
-
一个简单的存储过程报错,求大神指教
--Drop PROCEDURE [dbo].[FenYe]
CREATE PROCEDURE [dbo].[FenYe]
@curPage int, --当...
-
如何在调试时清除临时表
用临时表时碰到错误
Msg 2714, Level 16, State 6, Line 3
There is already an object named '#TblPr...
-
还原数据库时,出现怪事了....
我用的SQL的版本是 Microsoft Corporation 版本8.0
企业管理器---找到相应的数据库名---右键---...
-
动态列!急!
下面的存储是我举例子的,并不正确!我想实现当我输入参数,2012,1,2012,12 的时候,Ytd就
得到那参数区间的和,问题就在,如...
-
为庆祝PASS北京分会成立,12月份在微软中国举办第一次线下活动。欢迎报名!
The Professional Association for SQL Server (简称PASS...
-
关于数据分页问题。
朋友说,微软自带的ListView数据分页不能使用,效率太低,查询要把整个数据库查一遍,说是要Row_Number。
那么Row_N...
-
sql查询优化
表 table 有24个字段,3万条数据,现在我查询该表的所有数据
select * from table order by id
查询时间在1分20秒左右...
-
sql 多张表的列合并成一条数据
比如
A表 有下列
name stock(库存)
苹果 10
香蕉 20
B表
name import(入库)
苹果...