一个表中的多个字段和另外一张表的一个字段链接的实现

在论坛里看到这样一个问题:

我有两个表,MemberInfo (MemberName,ProvinceID,CapitalID,CityID) ,
MemberName,ProvinceID,CapitalID,CityID
张三               1000          1001    1002

CityInfo(CityID,CityName)
1000   湖北省
1001   武汉市
1002   江汉区

其中用户表里的省份 城市ID 等对应CiityInfo里的ID

现在我要输出这样格式的数据,请问SQL怎么写?

姓名    省份      地区    县级市   
张三    湖北省  武汉市  江汉区

实现方式:

SELECT     M.MemberName AS '姓名', K.CityName AS '省份', F.CityName AS '地区', C.CityName AS '县级市'
FROM         MemberInfo AS M LEFT OUTER JOIN
CityInfo AS K ON M.ProvinceID = K.CityID LEFT OUTER JOIN
CityInfo AS F ON M.CapitalID = F.CityID LEFT OUTER JOIN
CityInfo AS C ON M.CityID = C.CityID

--子查询的方式

SELECT F.MemberName,(SELECT Cityname FROM CityInfo WHERE CityID= F.ProvinceID) AS 省份,
  (SELECT Cityname FROM CityInfo WHERE CityID= F.CapitalID) AS 地区,
(SELECT Cityname FROM CityInfo WHERE CityID= F.CityID) AS 县级市
FROM MemberInfo F

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15042150/viewspace-504573/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15042150/viewspace-504573/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值