评论表
+------+----------+
| id | comment |
+------+----------+
| 1 | foo |
| 2 | bar |
| 3 | foobar |
+------+----------+
重播表
+------+----------+------------+
| id | replay |comment_id |
+------+----------+------------+
| 1 | replay1 | 1 |
| 2 | replay2 | 2 |
| 3 | replay3 | 1 |
+------+----------+------------+
SELECT
`comment`.`comment`,
`comment`.`id`,
(SELECT `replay`.`replay` FROM `replay`
WHERE `replay`.`comment_id` = `comment`.`id`
ORDER BY `replay`.`id` DESC LIMIT 1) AS `replay`
FROM `comment`
结果将是
+----------+------+---------+
| comment | id | replay |
+----------+------+---------+
| foo | 1 |replay3 |
| bar | 2 |replay2 |
| off | 3 | |
+------+----------+---------+
如何获得replay3的位置(偏移量),预计它为2
replay1将其偏移1,重放2偏移量为1,重放3偏移量为2
答案 0 :(得分:0)
我现在明白了。你不是指任何抵消。您的意思是每次重播的评论数量(数量)。
我们走了:
SELECT
COUNT(*) AS amount
FROM replays
GROUP BY comment_id
在您现有的查询中,我使用JOIN
代替子选择。
SELECT
*
FROM comments c
JOIN replays r ON c.id = r.comment_id
ORDER BY r.id DESC
您还应该注意哪个是您的主要实体。