试想一个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