MySQL 选择语句操作



我在MySQL中有一个表,结构如下:

+=================+================+================+=================+
| Value to search | start time     | endtime        | value to return |
+=================+================+================+=================+
| Value A.        | some date/time | some date/time | value 1.        |
| Value B.        | some date/time | some date/time | Value 2.        |
| Value C.        | some date/time | some date/time | value 3.        |
| Value A.        | some date/time | some date/time | value 4.        |
+===================================================+=================+

要搜索的值不是唯一的,它将是为特定时间(开始和结束时间(分配的唯一令牌。

当向 MySQL 发送查询时,查询系统只能发送一个简单的 JDBC 查询(选择 valueToSearch, valueToReturn from table/view(。

现在我需要做的是使用如下查询搜索上表:select valueToReturn from myTable/myView where ( someDateTime < endTime AND someDateTime > startTime AND valueToSearch == value)

我的第一个选择是创建一个视图,该视图通过将 valueToSearch 与开始时间和结束时间之间每秒的纪元值合并来构造一个键值,但结果是一个简单的表行最终将变成 86400 行,这将非常无效,并且会使数据库大小膨胀 86400 倍。

现在我的问题是: 如何使用合并值(valueToSearch_someDateTime(向MySQL数据库发送查询,然后使MySQL操作收到的查询并搜索valueToSearch,其中(结束时间>某个日期时间和开始时间<某个日期时间(并返回相关值返回>

感谢您的帮助。

MySQL有一个名为now((的函数,所以你的视图看起来像

CREATE VIEW myView AS SELECT valueToSearch,valueToReturn 
FROM myTable WHERE now() < endTime AND now() > startTime;

编辑:包含来自不同表的参数的附加视图,其中一行用于对值到搜索和搜索时间。在使用 myView2 之前应该更新/插入。

CREATE VIEW myView2 AS SELECT t1.valueToSearch,t1.valueToReturn
FROM myTable t1,paramTable t2 WHERE t1.valueToSearch = t2.valueToSearch
AND t2.searchTime < t1.endtime AND t2.searchTime > startTime;

最新更新