Mysql获取行的偏移量

时间:2016-04-19 11:22:08

标签: mysql

评论表

+------+----------+
| 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

1 个答案:

答案 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

您还应该注意哪个是您的主要实体。

  • 评论有重播吗?
  • 重放有评论吗?
  • 每个(关系)有多少个?