|
|
|
| Здравствуйте.
Почему-то первый запрос не возвращает ничего:
SELECT COUNT(id_msg)
FROM mbm_messages
WHERE id_user = 1
AND with_id_user = 11
LIMIT 5, 5
|
Ограничение можно обойти, если выполнить второй запрос и посчитать количество возвращаемых рядов средствами php:
SELECT id_msg
FROM mbm_messages
WHERE id_user = 1
AND with_id_user = 11
LIMIT 5, 5
|
Интересно, COUNT и LIMIT несовместимы? | |
|
|
|
|
|
|
|
для: antf
(06.11.2014 в 23:54)
| | Первый запрос без LIMIT вернет одну единственную строку (поскольку применена агрегатная функция (здесь - COUNT, но на самом деле - с любой будет одинаково) а сам агрегат на группы не разбит, будет выполнено вычисление над одной совокупной группой, и возвращена одна строка.)
LIMIT 5,5 (который воздействует на результат, а не на аргумент агрегатной обработки) пятой строки в наборе данных ответа попросту не найдет. И обрежет результат до пустого.
О совместимости говорить не приходится - поставьте GROUP BY чтоб число групп было побольше, получите в ассортименте строк более пяти, и убедитесь, что COUNT и LIMIT вполне совместимы.
Происходит это именно так, и никак иначе.
Напомню два постулата
1. строки в таблицах лежат внавал. Говорить о каком-либо предопределенном порядке строк в таблице - идеологически некорректно.
2. От сервера БД в общем случае ожидается детерминированный отклик. | |
|
|
|