请参见下面的示例数据:高级(?可能不是)MySQL查询select语句
'messages' table data:
id, date, user, seen
674, 1399430687, 2, 0
675, 1399430957, 2, 1399431766
676, 1399431065, 1, 1399431766
677, 1399431723, 2, 1399431766
678, 1399434322, 2, 0
679, 1399434330, 2, 0
我想做的事情只看到最近的非计数(看到= 0)记录到一个特定的用户(用户:2)UP和ONLY直到下一个看到的记录(看过> 0)。所以在上面的例子中,有3个看不见(看过= 0)的记录给用户(用户:2),但其中只有2个我感兴趣,因为下一个记录中间有一些记录。所以在上面的场景中,计数2会被返回(不是实际的记录)。
此外,如果看到用户(用户:2)的最新记录(看到> 0),则应返回0的计数。我只是无法理解如何在mysql中执行此操作,或者如何真正描述它。
这是所有我可以工作,但在上述情况下,这将导致3,而不是2:
SELECT COUNT(*)
FROM `messages`
WHERE seen = 0
AND user = 2
ORDER BY DATE DESC
我希望这是有道理的。
谢谢。
您需要意识到的第一件事是数据库中的数据不是以任何特定方式“排序”的。当你选择'WHERE seen = 0'时,其他'看到'的数据根本不会被检索到。 – serakfalcon
非常真实,好点。 – Martin