根据时间选择行

时间:2015-12-15 05:05:02

标签: mysql sql

数据:

Record_No Entry Timings  and CARD_RATE_TIMINGS and Rate 
1         19:40:42             09:28:30           64.98
2         19:40:42             17:23:26           65.10
3.        19:40:42             20:25:13           66.10

要求是仅选择第2条记录,因为进入时间是在card_rate_timing之后,因为卡速率时间大于进入时间,所以应忽略3条记录。

条目时间表名称是RTI和卡片费率时间表名称是RTH

2 个答案:

答案 0 :(得分:2)

假设您使用'Record_No'作为索引,要创建包含这两列的表,您需要使用join语句。

SELECT RTI.Record_No, RTI.ENTRY_TIMINGS, RTH.CARD_RATE_TIMINGS
FROM RTI
INNER JOIN RTH
ON RTI.Record_No=RTH.Record_No;

您可以使用ON子句添加另一个条件,指定ENTRY_TIMINGS大于CARD_RATE_TIMINGS

ON RTI.Record_No=RTH.Record_No AND RTI.ENTRY_TIMINGS > RTH.CARD_RATE_TIMINGS

但是,根据您的数据,这将选择第1行和第2行。您必须添加更多条件,以便从此处按照您的需要过滤数据。例如,正如注释所建议的那样,使用LAST()函数和另一个select语句(将这一个嵌套在FROM中)仅选择最后一行。

答案 1 :(得分:0)

SELECT a.Record_No, a.Entry_Timings, a.CARD_RATE_TIMINGS FROM <YOUR TABLE NAME> AS a WHERE a.Entry Timings > a.CARD_RATE_TIMINGS

替换为您的表名。

如果您只想要一个记录集限制,

SELECT a.Record_No, a.Entry_Timings, a.CARD_RATE_TIMINGS FROM <YOUR TABLE NAME> AS a WHERE a.Entry Timings > a.CARD_RATE_TIMINGS LIMIT 0, 1