我有两张表, A 表为文章, B 表为评论表。 我想通过 A 表关联 B 表,并取 B 表最新的评论内容?
我看到网上有说使用 max(id) 然后对 A 表 in ( max(id)),我感觉这样在 A 表内容很多的时候会存在性能问题,不知有没有其他解决方法。
我有两张表, A 表为文章, B 表为评论表。 我想通过 A 表关联 B 表,并取 B 表最新的评论内容?
我看到网上有说使用 max(id) 然后对 A 表 in ( max(id)),我感觉这样在 A 表内容很多的时候会存在性能问题,不知有没有其他解决方法。
|
mzsongyanNov 6, 2016 via iPhone
1
用 order by 啊
|
|
2
@mzsongyan 单独通过 order by 是没发去除重复的。我去除重复一般使用 ```GROUP BY```做的。但是 ```GROUP BY ``` 是先去重在排序。这样 B 表取不到最新的值。
|
|
mzsongyanNov 6, 2016 via iPhone
3
不明白评论还有重复的……
|
|
mzsongyanNov 6, 2016 via iPhone
4
可以试试 distinct
|
|
qiayueNov 6, 2016
6
分两次查询不好吗
|
|
desNov 6, 2016 via Android
8
|
|
GGGG430Nov 6, 2016
9
增加一个 redis 做缓存怎么样, 一分钟刷新一次最新评论
|
|
xzemNov 6, 2016
12
>A 表和 B 表是 一对多的关系。一个文章可以有多个评论
这个只是多个评论不算是重复吧? 也不用去重啊, 想取最新的评价直接 order by 不就行了? |
|
latyasNov 6, 2016
13
谁是右表?评论表?用什么键关联
|
|
17
右表先去重, group by 后 order by 根据 row number 取最新的一条评论
|
|
latyasNov 6, 2016
19
对给定文章,评论表自增 id 最大和“最新”是否是一个意思? (前提是有自增 id 而不是 uuid 。。)
|
|
fantasleotaoNov 6, 2016
20
partition by
|
|
desNov 6, 2016
21
@shawshi
这样如何 SELECT * FROM users LEFT JOIN (SELECT uid,post,max(time) AS time FROM post GROUP BY uid) USING(uid); |
|
mliilmNov 6, 2016
22
需要用 window function ,比如 row number, first value 之类的
|
|
liujin834Nov 6, 2016
24
|
|
reusNov 7, 2016
25
这种用窗口函数都是最简单的问题,所以换用 postgresql 吧, mysql 的查询太弱了!
|