基本上我要做的是将行的 ID 与 MySQL 中的 15 个结果进行比较,消除除 1 之外的所有结果(使用NOT IN
),然后提取该结果。
现在通常这本身就可以了,但是我正在执行 SQL 查询的 15 行的顺序会根据排名不断变化,因此在排名更新和 ajax 请求之间有可能(我提交的 ID 为NOT IN
)不止一个 ID 发生了变化,这当然会带回不止一行我不想要的。
简而言之,有没有一种方法可以查询 15 行,但只返回一个?无需运行两个单独的查询。
例子
假设我的数据库中有 7 个项目,我在页面上向用户显示 5 个。
这些是向用户显示的内容:
Apple
Orange
Kiwi
Banana
Grape
但在数据库中我也有
Peach
Blackberry
现在我想做的是,如果用户从他们的列表中删除一个项目,它将添加另一个项目(基于他们拥有的排名)
现在的问题是,为了知道他们现在的清单上有什么,我将剩余的项目发送到数据库(假设他们删除了 Kiwi,我会发送 Apple、Orange、Banana 和 Grape)
所以现在我从剩下的六个项目中选择排名最高的 5 个项目,确保它们不是页面上已经显示的项目,然后将新的项目添加到列表中(Peach 或 Blackberry)
一切都很好,除了如果桃子和黑莓现在都超过葡萄,那么我将返回两个结果而不是一个。因为它会询问...
Apple
Orange
Banana
Peach
Blackberry
并排除...
Apple
Orange
Banana
Grape
这给我们留下了桃子和黑莓,而不仅仅是桃子或黑莓。