gpt4 book ai didi

MYSQL 返回不完整的结果

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

我有一个名为 books 的表,其中包含以下数据:

id | description | section
1 | textbook 1 | 1
2 | textbook 2 | 1
3 | textbook 3 | 1

我使用以下查询来选择 id 2 以及第 1 部分中的下一行和上一行:

SELECT id FROM books where id IN
(2,
(SELECT id FROM books WHERE id < 2 LIMIT 1),
(SELECT id FROM books WHERE id > 2 LIMIT 1)
)
AND section = 1

当我添加 section = 1 时,查询只返回 id 2,而它应该返回所有 3 个 id,但是当我删除这部分时,它会选择所有 3 个 id。我的方案实际上比那个更复杂,但我简化了它以说明情况。那么,我在上面做错了什么?

最佳答案

(SELECT id
FROM books
WHERE id < 2 and section = 1
ORDER BY id DESC
LIMIT 1)

UNION

(SELECT id
FROM books
WHERE id >= 2 and section = 1
ORDER BY id ASC
LIMIT 2)

您的查询的问题是您选择了小于 2 和大于 2 的随机 ID,而没有考虑该部分。如果这些 ID 不在第 1 部分中,则它们不会包含在结果中。

外部查询中的 WHERE 子句未分布到子查询中。子查询独立执行,返回 ID,这些 ID 放入 IN 子句中。然后外部查询按部分过滤。

FIDDLE

关于MYSQL 返回不完整的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17038253/

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