MySQL, Как получить из запроса (кто использует LIMIT) количество возвращаемых строк и сохранить набор строк. (Сохранить процедуру / функцию) и по номеру оператора набора строк
Например, таблица X имеет 9 записей
х = 5
Я делаю запрос:
Select * From `x` LIMIT 0,5
// Мне нужны данные из этого запроса и количество строк.
// Переменная количество - хранит количество строк, возвращаемых первым запросом,
Когда первый набор строк запроса меньше 5 строк, тогда
Я делаю новый запрос из таблицы Z
Select * From `z` Limit 0,(5 - count)
--------------------------------
Трюк с FOUND_ROWS не работает.
--------------------------------
Проблемы:
Как это сделать в магазине процедуры / функции (MySQL)?
Как получить из первого запроса (набор строк и количество возвращаемых строк) в одном запросе?
--------------------------------
Цели:
После работы функция должна вернуться
Сумма набора строк (запрос 1 и 2).
Или же
запрос набора строк 1
2 ответа
Я нашел решение:
MySQL (содержимое процедуры хранения):
Set @tmp = 0;
Select `field_1`, `field_2` From `table_1` Where @tmp := @tmp + 1 LIMIT 0 ,5;
// У нас есть набор строк и в переменной сеанса (@tmp) - количество возвращаемых строк
@СОВЕТ
@tmp := @tmp + 1
Это должно быть раньше всех условий, в которых.
Например:
[.....] Where @tmp := @tmp + 1 And `field_2` > 1 LIMIT 0, 5;
Вернется всегда 1...
Правильная версия
[.....] Where `field_2` > 1 And [Other conditions] And @tmp := @tmp + 1 LIMIT 0, 5;
Select * From `z` Limit 0,(5 - (SELECT COUNT(*) FROM `x` LIMIT 0,5))
Не проверял, работает ли это, но это sholud. Я ссылаюсь на руководство: http://dev.mysql.com/doc/refman/5.0/en/subqueries.html