Когда параметр LIMIT использует два значения, например: "LIMIT 7, 10". Оба значения позволяют получить срез данных, первый - это начало среза (порядковый номер среза), второй - это количество записей. Это понятно. Вопрос мой такой: Допустим в таблице имеется 100 записей, а LIMIT имеет значения: "120, 10", то есть мы пытаемся получить записи, которых нет. По сути, запрос должен вернуть пустой массив, но запрос возвращает последние 10 записей. Даже, если LIMIT будет такой: "650, 10" я получу последние 10 записей, а не пустой массив.
это так и должно быть, или массив все таки должен вернуться пустым?
LIMIT - это никакой не номер среза! (MySQL понятия не имеет о ваших срезах)
LIMIT - это количество строк в выдаче которое будет пропущено, то есть LIMIT 65, 10 означает - возьми все строки и выдай 10 строк начиная с 66-ой строки
limit штука простая. LIMIT [offset,] row_count означает, что запросу нужно прочитать offset + row_count строк из результата запроса, затем отбросить первые offset найденных строк и вернуть то что осталось. Вот и вся логика. Если после откидывания offset строк в результате не осталось - будет возвращено пустое множество.