【发布时间】:2015-01-13 18:21:10
【问题描述】:
我有两个表,我想从 review 表中选择 author 为 usr1 的所有行,并将其加入到帖子表中,其中 threadid 和 tid 列匹配,但使用 MIN(positionID)。
这是我的评论表:
cid tID author
1 | 1 | usr1 |
2 | 2 | usr2 |
3 | 3 | usr1 |
4 | 3 | usr1 |
还有帖子表:
id threadID rating positionID
1 | 1 | 99.99 | 1
2 | 1 | 150.00 | 2
3 | 2 | 33.10 | 1
4 | 2 | 10.00 | 2
5 | 3 | 16.00 | 1
6 | 3 | 45.00 | 2
7 | 3 | 75.00 | 3
预期结果:
cid tID author rating
1 | 1 | usr1 | 99.99
3 | 3 | usr1 | 16.00
4 | 3 | usr1 | 16.00
阅读后我尝试了几个不同的查询,如下面的这个,但我在几行中得到了 NULL:
SELECT * FROM Reviews AS R
LEFT JOIN (SELECT * from posts GROUP BY positionID) AS P on P.threadID=R.tID
WHERE c.author_name='usr1'
也许左连接不是我需要的?
【问题讨论】:
-
为什么你的结果集有重复的行?
-
结果集没有重复行。 cid 不同
-
但是其他的都一样吗?
-
是的。其他列也很少有不同。为清楚起见省略。只要能拿到min(positionID),剩下的我都可以管理
-
只是另一个问题 - 是否会出现最小 positionid 不是 1 的情况?
标签: mysql join greatest-n-per-group