鑑於分頁結果集中特定元素的MySQL主鍵,是否有函數來獲取元素所在的頁碼?確定項目可能在哪個頁面上?
如果不是,什麼是可以幫助我到達那裏的僞代碼?請注意,主鍵可以刪除,並且將有序列呆這麼簡單的算術可能無法正常工作的「空白」 ......
鑑於分頁結果集中特定元素的MySQL主鍵,是否有函數來獲取元素所在的頁碼?確定項目可能在哪個頁面上?
如果不是,什麼是可以幫助我到達那裏的僞代碼?請注意,主鍵可以刪除,並且將有序列呆這麼簡單的算術可能無法正常工作的「空白」 ......
SELECT COUNT(*) as amountBefore FROM `table` WHERE `id` <= 'id'
page = ceil(amountBefore/amountPerPage)
事情是這樣的:
SELECT FLOOR(POSITION/15) FROM (
SELECT @rownum:[email protected]+1 as POSITION, id
FROM table_name, (SELECT @rownum:=0) r
ORDER BY published DESC
) t WHERE id = 17;
(給你的ID爲17
,你的每個頁面項目爲15
,而你通過訂購屬性是published
)
但要知道,任何解決方案(如果你在PHP中做到這一點更是這樣)是有點wastefull因爲很多數據是temporarilly收集 - 如果它以任何方式possible試圖通過路由/獲取參數/網址接收當前頁面。
感謝您提供後面的建議,但問題不在於獲取當前頁面,而是在沒有實際分頁的情況下查找元素的頁碼。 –
@aditya menon這就是爲什麼我說「如果它在任何情況下possibile」:)在任何情況下,據我瞭解,我的事情應該工作 – Hannes
嗨,我試過'選擇地板(位置/ 10) 從( SELECT @rownum:= @rownum 1 AS POSITION,DOMAIN_ID FROM域,( SELECT @rownum:= 0 )R ORDER BY域ID DESC )噸 WHERE域ID = 18' 以我域表,並我總是得到0作爲輸出(在phpMyAdmin中) - 我做錯了什麼? –
聰明的一個:)但<=在Where子句中會更好 – Svetoslav
你是對的,在我的回答中編輯:) – Geert
不會工作,如果你需要通過除id以外的任何東西(或任何不是id或與ID同步)也可能會很棘手,如果你有一個組合的密鑰和/或你的密鑰不是數字 – Hannes