試想一個MySQL表是這樣的:找出一組項目的最後一個項目在SQL
---------------------------
ListID | itemID | Item
---------------------------
List_1 | item_1 | Apple
---------------------------
List_1 | item_2 | Orange
---------------------------
List_1 | item_3 | Pear
---------------------------
List_2 | item_1 | Potatoes
---------------------------
List_2 | item_2 | ...
我有一個getNextItem()
函數遞增ITEMID並使用SQL查詢來獲取下一個項目:
SELECT * FROM items_tbl
WHERE listID = "$listId"
AND itemID = "$itemID"
LIMIT 1
在SQL中有一個簡單的方法來弄清楚我所得到的項目是否是該列表中的最後一個?
我可以在表中添加一列並標記每個列表的最後一項,或者我可以進行另一個查詢,獲取最高的項目編號並與我的列表中的當前項目進行比較,或者獲取項目的總數該清單並跟蹤與清單總數相關的項目編號......但所有這些解決方案都像是黑客攻擊。
有人可以提出更好的SQL的東西,並解釋一下它是如何工作的?
「last」和「next」是如何定義的?爲了找到「下一個」行,你排序哪一列?除非你使用ORDER BY,否則就不會有「下一個」行。 –
@a_horse_with_no_name:函數getNextItem()遞增itemID,所以「next」表示具有列表中下一個itemID的項目。如果當前項目是蘋果,則下一個項目是橙色,最後一個項目是梨子。 – Sylverdrag