如果我有一个包含 3 个表 A、B 和 C 的数据库。这些表每个都有一个时间戳列。
如何查询 3 个表以获取时间戳最少的行(最接近现在)。
我可以分别查询每个表并获取每个表的最小时间戳,然后在代码中进行比较,但我认为必须有更有效的方法。
我想这样做是因为,我想为 NEXT 到期日期安排警报,而不是为所有时间戳安排警报。我正在使用 SQLITE。
有什么帮助吗?
如果我有一个包含 3 个表 A、B 和 C 的数据库。这些表每个都有一个时间戳列。
如何查询 3 个表以获取时间戳最少的行(最接近现在)。
我可以分别查询每个表并获取每个表的最小时间戳,然后在代码中进行比较,但我认为必须有更有效的方法。
我想这样做是因为,我想为 NEXT 到期日期安排警报,而不是为所有时间戳安排警报。我正在使用 SQLITE。
有什么帮助吗?
SELECT MIN(TS), Table_Name FROM (
SELECT MIN(TS) AS TS, 'A' as Table_Name FROM A
UNION SELECT MIN(TS) AS TS, 'B' as Table_Name FROM B
UNION SELECT MIN(TS) AS TS, 'C' as Table_Name FROM C);
我认为最好的方法是从其中的 3 个中形成一个统一的选择查询,例如,如果表 A 有 3 列,表 B 有两列,则为它们编写一个三列选择并使用例如 '' 作为第三列. 那么你可以使用Union
and Order
by 来实现你的最终查询。(因为我不知道你的表结构我只是使用了 A. ,b. ,C.*)
with temp as (
SELECT A.* Table_Name FROM A
UNION SELECT B.* as Table_Name FROM B
UNION SELECT C.* as Table_Name FROM C
)
select top(1) temp.* from temp Order By temp.TS where temp.TS<TimeNow