0

たとえば、テーブル x には 9 つのレコードがあります

x = 5

私はクエリを作成します:

 Select * From `x` LIMIT 0,5

// このクエリと行セット数からのデータが必要です。

// 変数カウント -- 最初のクエリで返された行数を格納します。

最初のクエリ行セットが 5 行未満の場合、

テーブル z から新しいクエリを作成します

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

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

FOUND_ROWS によるトリックは機能しません。

http://pastebin.com/1kKD0wqC

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

問題:

ストアプロシージャ/関数(MySQL)でそれを行う方法は?

1 つのクエリで最初のクエリ (行セットと返された行数) から取得するにはどうすればよいですか?

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

ターゲット:

仕事関数の後

行セットの合計 (クエリ 1 と 2)。

または

行セット クエリ 1

4

2 に答える 2

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 @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 に答える
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 に答える