请教一个 sql 查询的问题

2017-05-23 14:46:05 +08:00
 tttttttt

请教下如图所示,这个如何用 sql 查出来

1686 次点击
所在节点    问与答
15 条回复
Hyeongo
2017-05-23 14:59:28 +08:00
行转列
case when
Hyeongo
2017-05-23 15:04:46 +08:00
看错了
saar
2017-05-23 15:06:02 +08:00
结果表,是乱写的话,感觉应该三张表,分别是用户、城市,为毛城市表里面还有省份?

seclcet User.username,User.user_sex,City.city from User,City where User.user_sex='男' and User.city_id=City.parent_id
tttttttt
2017-05-23 15:13:13 +08:00
![]( https://ooo.0o0.ooo/2017/05/23/5923e0f06c900.png)
tttttttt
2017-05-23 15:13:50 +08:00
!()[https://ooo.0o0.ooo/2017/05/23/5923e0f06c900.png]
tttttttt
2017-05-23 15:15:59 +08:00
回复不能用 markdown 吗? 前两个表是数据结构,最底下的一张表是要求返回的格式
tttttttt
2017-05-23 15:17:36 +08:00
@saar city 表中是父子的关系,父类是省,可以有子类市
Hyeongo
2017-05-23 15:21:47 +08:00
SELECT U.id,u.User_name,U.user_sex,(t.CIty_Name+c.CIty_name) AS City
FROM [USER] AS U
LEFT JOIN City AS C ON u.city_ID=c.ID
LEFT JOIN City AS t ON c.Parent_ID=t.ID
WHERE t.Parent_ID=0
lissome
2017-05-23 15:28:38 +08:00
```
select u.id, u.user_name, u.user_sex, CONCAT(p.city_name, c.city_name) as city
from `User` u
left join City c ON c.id = u.city_id
left join City p on p.id = c.parent_id
```
tttttttt
2017-05-23 15:53:43 +08:00
@lissome 牛逼,bingo ;谢谢
tttttttt
2017-05-23 15:55:01 +08:00
@Hyeongo 谢谢回复,你的 select field 中 (t.CIty_Name+c.CIty_name) +号好像不行,最好用 concat
Hyeongo
2017-05-23 15:59:27 +08:00
@tttttttt 你的是 mysql ?我用 sqlserver 执行过的
tttttttt
2017-05-23 17:02:08 +08:00
@Hyeongo 奥,不好意思,我用的 mysql。。😊
Wolfsin
2017-05-23 17:17:04 +08:00
select user.id,user_name,user_sex,city_name as city
From user,City
where user.id=city.id


多表查询中的等值连接
tttttttt
2017-05-24 11:13:32 +08:00
@Wolfsin 嗯,这条 sql 确实能查出数据,但是你看第三张表要返回的数据格式中 city 字段是省市

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/363205

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX