被 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 怎么写,而不是这样一步步来

7436 次点击
所在节点    MySQL
27 条回复
triptipstop
2019-05-28 11:25:32 +08:00
SELECT c.price
FROM TableC c
LEFT JOIN TableB b
ON c.msid=b.msid
WHERE c.msid in (
SELECT TOP 5 msid
FROM TableA
)
lhjl1314
2019-05-28 11:28:48 +08:00
你这 table b 有啥用
cpj
2019-05-28 11:30:47 +08:00
@triptipstop 我要一起显示 c.price, a.msid, a.type 等等,不单单是 SELECT c.price
lihongjie0209
2019-05-28 11:33:25 +08:00
为什么不在代码里组装?
cpj
2019-05-28 11:34:22 +08:00
@lihongjie0209 本来打算写在代码逻辑里,但是想看看有没有 SQL 语句可以完成
gosansam
2019-05-28 11:34:32 +08:00
table b 是来搞笑的嘛
cpj
2019-05-28 11:35:44 +08:00
@lhjl1314 LEFT JOIN TableB b ON c.msid=b.msid 也可以去掉,可以去掉 TableB,但还是不知道 SQL 怎么写
cpj
2019-05-28 11:36:58 +08:00
@gosansam 我突然发现,是的...直接 copy 过来没注意...
lihongjie0209
2019-05-28 11:57:48 +08:00
@cpj 千万别有这种想法, 需求一变万一 SQL 满足不了还得重写
phpmysql
2019-05-28 11:58:59 +08:00
select
c.price, temp.*
from
c
join (
SELECT
TOP 5 msid, *
FROM TableA
) as temp on c.msid = temp.msid
yiyi11
2019-05-28 12:02:43 +08:00
楼上也可以,我这是等值连接:
select a.*, c.*
from TableA a,
TableC c
where a.msid = c.msid
and a.msid in (SELECT TOP 5 msid FROM TableA);
hhhzccc
2019-05-28 12:15:08 +08:00
没用到 b 表的值,你左连接干啥子
chen2019
2019-05-28 12:18:52 +08:00
迫于问题过于简单,只回答,子查询
chen2019
2019-05-28 12:23:30 +08:00
然而我错了
直接 a top5 再 join c
应该不用子查询
greatbody
2019-05-28 12:48:01 +08:00
为什么是“男”住了?
kangzai50136
2019-05-28 12:55:43 +08:00
@greatbody 强人锁男(滑稽)
EmotionV
2019-05-28 13:20:08 +08:00
知男而上(滑稽
woshijidan
2019-05-28 13:28:42 +08:00
@kangzai50136 男♂上加男
cpj
2019-05-28 15:09:30 +08:00
@phpmysql ok 啦,感谢
cpj
2019-05-28 15:09:39 +08:00
@yiyi11

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

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

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

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

© 2021 V2EX