LIMIT专业

时间:2012-09-26 21:05:36

标签: mysql limit

SELECT *, IFNULL(parent, id) AS p, IFNULL(reply_comment_id, id) AS r
FROM article_comments ORDER BY p ASC, r ASC, date DESC

enter image description here

我想使用LIMIT。如果我有更多行,我想通过“p”限制查询。 在图像中:(“p”:1,1,1,1,1) - 这是一个,(“p”:2,2,2,2,2,2,2) - 这是两个... < / p>

例如,我想要:如果我使用LIMIT 1,那么只显示(“p”:1,1,1,1,1)。enter image description here

1 个答案:

答案 0 :(得分:0)

以下是我将使用的查询:

SELECT * FROM
FROM article_comments
WHERE id = 1 OR parent = 1
ORDER BY parent ASC, reply_comment_id ASC, `date` DESC

请注意,我认为此处不需要您的计算列。当父级和reply_comment_id以升序方式排序时,NULL值将首先排序。

确保在parent,reply_comment_id和日期字段上有索引(除了id,我认为是主键)

此外,您可能需要考虑在日期列中使用日期时间字段,而不是使用unix时间戳。在查看数据库中的数据时,以及在尝试查询日期范围时,它非常用户友好/所以可以像这样编写过滤器:

WHERE `date` BETWEEN '2012-01-01 00:00:00' AND '2012-12-31 23:59:59'

而不是必须进行适当的时间戳转换。