gpt4 book ai didi

MySql 按where子句中的值进行排序查询

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

这是我的查询

select * from a_table where  
(19.1181753366684 between minlatitude and maxlatitude ) and (72.8504168987274 between minlongitude and maxlongitude) or
(19.1181043770386 between minlatitude and maxlatitude ) and (72.8506743907928 between minlongitude and maxlongitude) or
(19.1178306753238 between minlatitude and maxlatitude ) and (72.8506422042847 between minlongitude and maxlongitude) or
(19.1174454647353 between minlatitude and maxlatitude ) and (72.8505992889404 between minlongitude and maxlongitude) or
(19.1169791559797 between minlatitude and maxlatitude ) and (72.8505349159241 between minlongitude and maxlongitude) or
(19.1159857112009 between minlatitude and maxlatitude ) and (72.8504061698914 between minlongitude and maxlongitude) or
(19.1156309080473 between minlatitude and maxlatitude ) and (72.8503739833832 between minlongitude and maxlongitude) or
(19.1152862413976 between minlatitude and maxlatitude ) and (72.8502130508423 between minlongitude and maxlongitude)

我希望结果集按照我在条件之间的 where 子句中使用的值的顺序进行排序。所以我的结果集是有序的

19.11817534
19.11810438
19.11783068
19.11744546
19.11697916
19.11598571
19.11563091

这可能吗?

谢谢,里兹万

最佳答案

我认为除了将其分解为按您选择的顺序执行的多个查询之外,您没有其他方法可以做到这一点。

问题是您没有任何实际字段可供排序,也没有与结果集中的记录关联的方式与 WHERE 子句中的条件相关联(它们实际上可以匹配多个条件)。

作为替代方案,您也许可以创建过滤器数据的临时内存表,例如:

id   latitude          longitude
1 19.1181753366684 72.8504168987274
2 19.1181043770386 72.8506743907928
...

跨表连接的 then 查询:

SELECT a_table.*, temp_table.id
FROM
a_table INNER JOIN temp_table
ON temp_table.latitude BETWEEN a_table.minlatitude AND a_table.maxlatitude
AND temp_table.longitude BETWEEN a_table.minlongitude AND a_table.maxlongitude
ORDER BY temp_table.id ASC

显然,请确保您在 a_table 中的所有最小/最大纬度/经度字段上都有索引。

我不确定您希望如何处理此处的重复项(可能需要对 a_table 的主键进行 SELECT DISTINCT 操作)

关于MySql 按where子句中的值进行排序查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15798170/

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