用于按字符串的顺序检索数据的SQLite查询



TableMain

Task_Id  Task       Time     Date         Repetition    Snooze_Time
1        Meeting    22:59    23-3-2020    2             7
2        Meeting 2  20:40    23-3-2020    1             5 

我需要这样的结果:其中Time最小,Date=23-3-2020注意:Time存储为String(可以看到它有(:(冒号(结果应仅包含1行。(假设表中没有相同的时间(

Task_Id  Task       Time     Date         Repetition    Snooze_Time
2        Meeting 2  20:40    23-3-2020    1             5

我想知道是否存在通过或Time检索数据顺序的查询。如果可能的话,告诉我这个问题。如果不可能,告诉我该怎么办?

您可以使用NOT EXISTS:

select t.* from TableMain t
where t.date = '23-3-2020'
and not exists (
select 1 from TableMain
where date = t.date and time < t.time
)

或具有row_number()窗口功能:

select t.Task_Id, t.Task, t.Time, t.Date, t.Repetition, t.Snooze_Time
from (
select *, row_number() over (order by time) rn
from TableMain 
where t.date = '23-3-2020'
) t
where t.rn = 1

或:

select * from TableMain
where date = '23-3-2020'
order by time
limit 1

请注意,您应该只使用YYYY-MM-DD格式表示日期,mm:hh:ss格式表示时间,因为这是您在SQLite中可以安全使用的唯一格式。

最新更新