为什么以下查询从32-54返回记录而不是LIMIT子句中指定的记录?
SELECT
info.*,
type.titulo AS type_name,
category.titulo AS category_name
FROM infos_infos info
LEFT JOIN infos_categories category
ON category.id=info.category
LEFT JOIN infos_canais type
ON type.id=info.type
WHERE
info.active=1 AND
type.active=1
GROUP BY info.id
LIMIT 32,48
答案 0 :(得分:4)
LIMIT子句可用于约束SELECT语句返回的行数。
使用两个参数,第一个参数指定的偏移量 第一行返回,第二行指定最大数量 要返回的行。初始行的偏移量为0(不是1):
所以你想要它,所以设置LIMIT
就像
LIMIT 32, 16 # this will return rows from 32 - 48
回答你的问题"为什么以下查询从32-54返回记录?"这是因为您将开始时间设置为32,并且您没有超过54项。这就是为什么。 LIMIT 32,48
将尝试显示32 - 80行!
答案 1 :(得分:2)
https://dev.mysql.com/doc/refman/5.7/en/select.html
LIMIT因为你使用它是一个OFFSET + Count,你可能有少于80(32 + 48)的结果,所以它显示你从偏移32到你的数据结束
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
答案 2 :(得分:0)
SQL应该是:
SELECT
info.*,
type.titulo AS type_name,
category.titulo AS category_name
FROM infos_infos info
LEFT JOIN infos_categories category
ON category.id=info.category
LEFT JOIN infos_canais type
ON type.id=info.type
WHERE
info.active=1 AND
type.active=1
GROUP BY info.id
LIMIT 32,16