2012-12-15 33 views
0

例如表x具有9條MySQL,如何從查詢中獲得(誰使用LIMIT)返回的行數並保存行集。 (存儲程序/功能),並通過行集語句的數目

X = 5

我讓查詢:

Select * From `x` LIMIT 0,5 

//我需要從該數據查詢和行集計數。

//變盤點 - 存儲我做出新的查詢從表ž通過第一查詢返回的行數,

當第一個查詢行集比5行較小,則

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

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

欺騙由FOUND_ROWS不工作。

http://pastebin.com/1kKD0wqC

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

問題:

如何做到這一點的儲存過程/函數(MySQL的)?

如何從一個查詢中的第一個查詢(行集和返回的行數)中獲取?

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

目標:

工作功能後應該返回

總和行集(查詢1和2)。

或者

行集查詢1

回答

0

我發現的解決方案:

的MySQL(存儲過程的內容):

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

//我們有行,並在會話變量(@tmp) - 返回的行


@TIP

@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; 
0
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

+0

這種變異沒有給我第一個查詢行集和第二查詢行集 –

+0

的 一個SUM http://dev.mysql.com/doc/refman/5.1/ en/counting-rows.html你的意思是什麼? – Dharman

+0

http://pastebin.com/0UPTBbm 不是這樣。 我需要它(設置3行(0.00秒))和行集:) –

相關問題