我在某处读到:
当您使用
LIMIT
子句时,必须使用ORDER BY
子句。如果你不这样做,你有时会惊奇地遇到不同的结果。
这是真的吗?
其实这是我的疑问:
SELECT SUM(score) score, type, context, post_id, other_id, MAX(date_time)
FROM `events` e
WHERE e.id IN ($ids)
GROUP BY type, post_id, other_id
ORDER BY (seen IS NULL) desc, MAX(date_time) desc, MAX(e.id) desc
注意: $ids
是一个PHP变量,包含如下字符串:1, 2, 4, 76
。
我应该在查询中使用LIMIT
吗?如果是/否,那么为什么?
答案 0 :(得分:1)
不,如果您不想,则不必使用LIMIT
。 (我不知道作者的意思是“令人惊讶地面对不同的结果......”)
正如您所知,ORDER BY
子句指定应对结果集进行排序。同样地,{em>也知道的LIMIT
指定您只想查看该结果集的第一行 n 行(已排序或不)。
这两个条款完全相互独立。如果您想要查询返回的(已排序或未排除)行的全部,则您没有义务使用LIMIT
,并且,事实上,不应该这样做。