gpt4 book ai didi

sql - 在单个 SQL 查询中获取两个下一个和两个前一个条目

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:28 25 4
gpt4 key购买 nike

我想显示一个图片库,在 View 页面上,应该可以看到一堆缩略图:当前图片,包含前两个条目和后两个条目。

获取两个下一个/上一个的问题是我不能(除非我弄错了)选择像 MAX(id) WHERE idxx 这样的东西。

有什么想法吗?

注意:当然,id 不会跟随,因为它们应该是多个 WHERE 实例的结果。

谢谢编码(marshal)

最佳答案

请原谅 SQL Server 风格的变量名,我不记得 MySQL 是如何命名变量的。

SELECT *
FROM photos
WHERE photo_id = @current_photo_id
UNION ALL
SELECT *
FROM photos
WHERE photo_id > @current_photo_id
ORDER BY photo_id ASC
LIMIT 2
UNION ALL
SELECT *
FROM photos
WHERE photo_id < @current_photo_id
ORDER BY photo_id DESC
LIMIT 2;

此查询假设您可能拥有不连续的 ID。但是,从长远来看,如果您的表中有很多照片,这可能会成为问题,因为 TOP 通常是在从数据库中检索到整个结果集之后计算的。 YMMV.

在高负载情况下,我可能会使用这些查询,但我也会定期预先具体化它们,以便每张照片都有一个 PreviousPhotoOne、PreviousPhotoTwo 等列。它需要更多维护,但当您有大量静态数据并且需要性能时,它会很好用。

关于sql - 在单个 SQL 查询中获取两个下一个和两个前一个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/406616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com