親愛的所有...我熟悉MySQL,但不會與Firebird。在firebird中FOUND_ROWS()的功能是什麼?
我想改變我的PHP頁面,從MySQL到火鳥查詢。但我在改變命令FOUND_ROWS()
期間遇到了一些困難。是否有人在Firebird中知道FOUND_ROWS()的相同函數?
我瀏覽過每個網站,但我沒有答案。我被困在這個case.please幫助。
親愛的所有...我熟悉MySQL,但不會與Firebird。在firebird中FOUND_ROWS()的功能是什麼?
我想改變我的PHP頁面,從MySQL到火鳥查詢。但我在改變命令FOUND_ROWS()
期間遇到了一些困難。是否有人在Firebird中知道FOUND_ROWS()的相同函數?
我瀏覽過每個網站,但我沒有答案。我被困在這個case.please幫助。
類似@Andrei K.答案。
回答你的問題:有沒有等價在火鳥的FOUND_ROWS()的MySQL函數/語句。
解決方法:如果您致命地想知道該行數,請讓引擎運行新的查詢來計算第一個查詢的特殊版本的行數。對於簡單的查詢,@Andrei K. answer是準確的,但一般情況下,包括通過與組查詢和having子句使用這樣的查詢:
select count(*)
from (your original query here) q1;
您必須排除第一/如果出現在by子句跳過和秩序那原始的查詢。因此,對於一個查詢尋找這樣的:
select first 10 skip 20 pd.productcode, extract(year from ph.purchasedate) year, sum(pd.quantity) year_quantity
from purchase_details pd
inner join purchase_header ph
on ph.id = pd.purchase_id
where ph.cancelled = 0
and ph.salesman = 10
group by pd.productcode, extract(year from ph.purchasedate)
having sum(pd.quantity) > 1000
order by sum(pd.quantity) desc;
的FOUND_ROWS等效查詢將是:
select count(*)
from (
select pd.productcode, extract(year from ph.purchasedate) year, sum(pd.quantity) year_quantity
from purchase_details pd
inner join purchase_header ph
on ph.id = pd.purchase_id
where ph.cancelled = 0
and ph.salesman = 10
group by pd.productcode, extract(year from ph.purchasedate)
having sum(pd.quantity) > 1000
) q1
從我的經驗,這個工程的查詢的99.9%。
警告這種方法效率很低,使用時需要您自擔風險。
如果您正在使用此FOUND_ROWS()
顯示類似顯示出X行的y行,看看你的新頁面的版本,可以在沒有這些信息做。使用Firebird的方式,閱讀文檔似乎是,首先運行查詢,而不使用LIMIT
,然後使用LIMIT
。 LIMIT
是MySQL,不確定它在Firebird中叫什麼。然後你應該從MySQL轉換到Firebird的SQL_CALC_ROWS
。
有沒有辦法在火鳥知道多少行會返回查詢,但不運行查詢和獲取的所有數據或像這樣運行的查詢:
SELECT COUNT(*) FROM <your tables and conditions go here>