gpt4 book ai didi

mysql - 如何使用索引在两列之间进行查询过滤

转载 作者:行者123 更新时间:2023-11-29 01:03:29 26 4
gpt4 key购买 nike

我需要一个通用的 sql 查询,用于可以在 mysql、postgres 和其他主要数据库上运行的连接。

我有一个名为 autumn4.ip 的表,其中包含三列:id、start、end(均为整数)。

我如何进行连接,以便我不是通过 BETWEEN 而是通过 JOIN 使用 BUT?

喜欢(伪):

SELECT * FROM autumn.ip WHERE :number-constant >= start
ORDER BY start DESC LIMIT 1;

SELECT * FROM autumn.ip WHERE :number-constant <= end
ORDER BY start ASC LIMIT 1;

如何连接以上两个查询以获得等同于:

SELECT * FROM autumn4.ip WHERE :number-constant BETWEEN START AND END LIMIT 1;

我正在尝试在 startend 上使用 2 个索引。如果我在 (start, end) 上使用 BETWEEN 和/或复合索引,则只使用起始索引而不使用结束索引。现在请不要告诉我我错了。我只是想要那样。我对此做了很多研究。

如果我确实为开始和结束创建单个索引,则只使用一个。我正在寻找同时使用两者的查询。

最佳答案

一个简单的

SELECT * FROM autumn.ip WHERE :number-constant >= start
ORDER BY start DESC LIMIT 1
UNION
SELECT * FROM autumn.ip WHERE :number-constant <= end
ORDER BY start ASC LIMIT 1;

应该可以。

但是,让我质疑你的研究质量......

关于mysql - 如何使用索引在两列之间进行查询过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20787915/

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