MySQL, Как получить из запроса (кто использует LIMIT) количество возвращаемых строк и сохранить набор строк. (Сохранить процедуру / функцию) и по номеру оператора набора строк

Например, таблица X имеет 9 записей

х = 5

Я делаю запрос:

 Select * From `x` LIMIT 0,5

// Мне нужны данные из этого запроса и количество строк.

// Переменная количество - хранит количество строк, возвращаемых первым запросом,

Когда первый набор строк запроса меньше 5 строк, тогда

Я делаю новый запрос из таблицы Z

  Select * From `z` Limit 0,(5 - count)

  --------------------------------

Трюк с FOUND_ROWS не работает.

http://pastebin.com/1kKD0wqC

  --------------------------------

Проблемы:

Как это сделать в магазине процедуры / функции (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

Другие вопросы по тегам