被 SQL 查询男住了~

2019-05-28 11:22:23 +08:00
 cpj

有三个表 TableA, TableB, TableC, 现在我的步骤是:

1. 得到 TableA top 5 的 msid
SELECT TOP 5 msid
FROM TableA
结果比如为(1, 2, 3, 4, 5)

# 2. 根据 msid 得到 price 字段
SELECT  c.price
FROM TableC c
LEFT JOIN TableB b
ON c.msid=b.msid
WHERE c.msid in (1, 2, 3, 4, 5)

现在我想一起显示 c.price, a.msid 和 a 的其他字段,不知道 SQL 怎么写,而不是这样一步步来

7228 次点击
所在节点    MySQL
27 条回复
gransh
2019-05-28 16:06:33 +08:00
左右为男
belin520
2019-05-28 16:20:53 +08:00
男言之瘾
cpj
2019-05-28 16:33:38 +08:00
@belin520 你萌玩起来了是吧~ 那我就勉为骑男地看看
ily433664
2019-05-28 16:34:47 +08:00
男上加男
xnode
2019-05-28 16:38:12 +08:00
♂奸男险阻、排忧解男、进退两男、迎男而解、知男而上、男上加男、勉为骑男、强人锁男、自身男抱、左右围男、覆水男收、一言男尽~[滑稽]
chirsamao
2019-05-28 16:51:41 +08:00
你应该先分析, 第一步查询的结果是作为第二步的条件的, 所以你可以将第一步的 sql 带入到第二步的条件中,即第二步前面不变,从 in 开始, in(SELECT TOP 5 msid FROM TableA ), 这样虽然效率没有 join 高,但是很有效
luanluan
2019-05-28 16:53:19 +08:00
@triptipstop 我一直想知道左关联和直接查询的方式查 有什么区别?
@chirsamao
@yiyi11
各位大神指点 ,迷糊

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

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

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

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

© 2021 V2EX