SQL语句写法求大神指点

我有两张表,一个是线路表一个站点表,
线路表字段:BeginStationID、EndStationID
站点表:StationID、StationName

线段表里的两个字段都存的stationID,我现在要把线段表里的两个ID查询换成stationName,如何用一条语句搞定?

第1个回答  2016-08-02

思路:不知道你的BeginStationID、EndStationID这两个字段的数据类型,因为是ID我就当他们是int类型了,这样就要先把字段类型改为字符型,分别修改起点和终点。

--把字段类型先改为字符型
 alter table 线路表 alter column  BeginStationID varchar(20) 
 alter table 线路表 alter column  EndStationID varchar(20)
--分别修改起始站和到达站
    update set BeginStationID=StationName from 站点表 ,线路表 where BeginStationID=StationID
    update set EndStationID=StationName from 站点表 ,线路表 where EndStationID=StationID

第2个回答  2016-08-02
select BeginStationID =(select StationName from 站点表 where BeginStationID=StationID),
EndStationID =(select StationName from 站点表 where EndStationID=StationID)
from 线路表

你试试
第3个回答  2016-08-02
select t1.StationName as 开始站点 ,t2.StationName as 结束站点

from 线路表 t
left join 站点表 t1 on t.BeginStationID=t1.StationID

left join 站点表 t2 on t.EndStationID=t2.StationID

连接查询本回答被提问者和网友采纳

求大神指点以下SQL查询语句
1、这是sql中常用的“相关子查询”;2、相关子查询的执行依赖于外部查询。多数情况下是子查询的WHERE子句中引用了外部查询的表。 执行过程:(1)从外层查询中取出一个元组,将元组相关列的值传给内层查询。(2)执行内层查询,得到子查询操作的值。(3)外查询根据子查询返回的结果或结果集得到满足条...

求SQL大神指点,对比两表中两列的语句
如果是A表中所有电话都不包括B中的电话,那么使用下面这个语句就能查出来啦:select * from tableA a where not exists(select teleB from tableB where a.teleA like '%'+teleB+'%')如果是A中的某个值13X&15X&18X有号码在表B中不包括,需要查找出来,那么得用游标才行。需要的话请追问。

SQL命令未正确结束,求大神指点一二!
两表(多表)关联update -- 被修改值由另一个表运算而来 oracle SQL 代码 update customers a -- 使用别名 set city_name=(select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id)where exists (select 1 from tmp_cust_city b where b.customer_id=a....

SQL语句中如何求单行空值数量 或者百分比啊
select (新列1+新列2+新列3+………) 为NULL值列的数量 from (select case when 列1 is null then 1 else 0 end 新列1,case when 列2 is null then 1 else 0 end 新列2,case when 列3 is null then 1 else 0 end 新列3,………from 表名) a ...

...它们之间范围内的数值,如何写sql语句,求大神指点
“不在它们之间范围内的”:非 范围相交叠(在范围内)的都算 ==>select * from thetable where 6 < 开始值 < or 结束值 < 2

...如何将竖排的记录变横排?并且放置在同一单元格内,跪求大神指点...
select name 姓名,col1+' '+col2+' '+col3 参保类型from(select name,'失业保险' as col1,'医疗保险' as col2,'工伤保险' as col3 from table1pivot(max(type) for type in ([失业保险],[医疗保险],[工伤保险]))as pvt)tablz试一下,有问题再追问。

SQL语句,一张表中。三列合并问题。在线等。
SELECT 责任区号, isnull(林班1,'') + ',' + isnull(林班2,'') + ',' +isnull( 林班3,'') AS 林班 FROM dbo.责任区号与林班小班对照表

...时间为参数,算出@d 天内,股票的涨停次数。求大神指点
没有必要建sp吧,真要建,参数你居然不是int类型?!SELECT Code ,SUM(updownmax)FROM out3WHERE date >= DateAdd(dd, -@d, GetDate())GROUP BY Code

sql语句中的group by的用法,求大神指点。
GROUP BY (Transact-SQL)按SQL中一个或多个列或表达式的值将一组选定行组合成一个摘要行集。针对每一组返回一行。SELECT 子句 列表中的聚合函数提供有关每个组(而不是各行)的信息。GROUP BY 子句具有符合 ISO 的语法和不符合 ISO 的语法。在一条 SELECT 语句中只能使用一种语法样式。对于所有的新工作,请...

SQL语句求一个表中两列数据中的最大\/最小值\/标准差
select case( when MAX(col1) > MAX(col2) then 'col1大'when MAX(col1) < MAX(col2) then 'col2大'else '相等' end)as COL1,case( when MIN(col1) < MIN(col2) then 'col1小'when MIN(col1) > MIN(col2) then 'col2小'else '相等' end)as COL2,case( when avg(col...

相似回答