如何动态搜索MySQL数据?具体来说,我想查询一个表,例如:
mysql> select * from points where LAT != 0.0
之后我想查询上一个查询返回的信息:
mysql> select LAT, LON, FILE from points where LAT > 30.457835
如何查询以前的结果,而不是每次都搜索整个数据库?
我想要达到的目的是在Flask中集成动态搜索表单,其中表单中选择的每个字段都会缩小网页上显示的结果。在我看来,这种事情一直在发生,例如在图书馆数据库中,甚至是亚马逊。您添加的每个新条件是否会在数据库中创建一个全新的搜索字符串,或者您是否可以暂时将此信息存储在内存中并查询以前的结果?
我可以看到这对于怪异的数据库会有多大问题,但我的项目很少能够达到规模。
如果我的问题不在此处,请告诉我,以便我可以改写。我最终将通过flask / python工作,但我觉得我应该先了解MySQL的工作原理。烧瓶中的简单搜索表单和返回结果很简单,但是以合理的方式使用户友好,现在正在逃避我。
感谢。
答案 0 :(得分:1)
这里有三个选项:
首先(而不是一个很好的解决方案)是从查询结果中选择:
select * from (
select LAT, LON, FILE from points where LAT > 30.457835
)
where LAT != 0.0;
其次(效率更高)是将搜索条件合并到一个查询中:
select LAT, LON, FILE from points where LAT > 30.457835 and LAT != 0.0;
然而在你的例子中,这将是毫无意义的,因为任何大于30.457835的东西肯定不会等于零。
第三个(并且效率极低)选项是将第一个查询的结果写入临时表,然后查询临时表。这方面的SQL有点复杂,我建议只有在对生成的临时表运行多个查询时才这样做。
答案 1 :(得分:1)
使用子查询:
select sq.LAT, sq.LON, sq.FILE
from (select * from points where LAT != 0.0) as sq
where sq.LAT > 30.457835