【问题标题】:"Flexible" MySQL limit“灵活的” MySQL 限制
【发布时间】:2012-02-14 11:41:39
【问题描述】:
我有一个存放 cmets 的 mysql 表。 cmets 可以有子 cmets,但只能向下一级(有一个可选的“父”属性,评论的父级不能有自己的父级)。我想对这样的数据进行分页,像这样:
取第一个,比如 10 个顶级 cmets(带有页面偏移),以及它们的子 cmets(如果可用)。
显而易见的解决方案是获取 10 个 cmets,然后使用 IN 子句获取它们的子 cmets,但我觉得这是错误的方法(或者至少有更好的方法)。
有没有更好的方法来实现这一点?
【问题讨论】:
标签:
python
mysql
sql
django
【解决方案1】:
我认为 IN 子查询可能是你最好的选择:
SELECT whatever FROM comments_table c
WHERE c.id IN (SELECT id FROM comments_table c2 WHERE some_criteria_here LIMIT 10)
OR c.parent_id IN (SELECT id FROM comments_table c2 WHERE some_criteria_here LIMIT 10)