0

例如表 x 有 9 条记录

x = 5

我查询:

 Select * From `x` LIMIT 0,5

// 我需要来自这个查询的数据和行集计数。

// 变量 count -- 存储第一次查询返回的行数,

当第一个查询行集小于 5 行时,则

我从表 z 进行新查询

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

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

FOUND_ROWS 的伎俩不起作用。

http://pastebin.com/1kKD0wqC

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

问题:

如何在存储过程/函数(MySQL)中做到这一点?

如何从一个查询中的第一个查询(行集和返回的行数)获取?

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

目标:

工作后功能应该返回

行集的总和(查询 1 和 2)。

或者

行集查询 1

4

2 回答 2

0
Select * From `z` Limit 0,(5 - (SELECT COUNT(*) FROM `x` LIMIT 0,5))

没有检查它是否有效,但它应该。我参考手册: http ://dev.mysql.com/doc/refman/5.0/en/subqueries.html

于 2012-12-15T11:49:34.587 回答
0

我找到了解决方案:

MySQL(存储过程的内容):

Set @tmp = 0;
Select `field_1`, `field_2` From `table_1` Where @tmp := @tmp + 1 LIMIT 0 ,5;

// 我们有行集和会话变量 (@tmp) - 返回的行数


@提示

 @tmp := @tmp + 1

它必须在 where 的所有条件之前。

例如:

[.....] 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;
于 2012-12-16T16:25:18.070 回答