gpt4 book ai didi

mysql - SQL "previous"查询的意外结果

转载 作者:行者123 更新时间:2023-11-29 12:24:08 29 4
gpt4 key购买 nike

我正在尝试从数据库中获取上一张图像,其中图像按 ID 号列出。经过一番研究后,我遇到了这个查询,它应该提供之前的结果。然而它并没有这样做。相反,它提供小于当前 ID 号的第一个结果。 (代码格式为 PDO 中准备好的语句,请忽略 :name 变量。)

SELECT * FROM `images`
WHERE `category` = :cat
AND `id` = (SELECT `id` FROM `images` WHERE `id` = :id)
AND `id` < :id OR `id` < (SELECT `id` FROM `images` WHERE `id` = :id)
ORDER BY `id`
LIMIT 1

下面是表格的示例。

+----+-----------+----------+
| id | Image | Category |
+----+-----------+----------+
| 3 | image.png | 3 |
+----+-----------+----------+
| 6 | image.jpg | 3 |
+----+-----------+----------+
| 12 | anim.gif | 3 |
+----+-----------+----------+

现在,如果我在图像 12 上,这会说“上一个图像”的 id 为 3,而不是 id 6。

最佳答案

首先:SELECT id FROM images WHERE id = :id 是一个 NOOP。现在您想要的是具有小于给定值的最高 ID 的行 - 这应该不会太难:

SELECT *
FROM `images`
WHERE id<:id
ORDER BY id DESC
LIMIT 1
;

关于mysql - SQL "previous"查询的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28597119/

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