如何在db中查询3个表的时间最短

时间:2012-11-12 05:47:32

标签: android sql sqlite android-alarms

如果我有一个包含3个表A,B和C的数据库。这些表每个都有一个时间戳列。

如何查询3个表以获得时间戳最短的行(最接近现在)。

我可以单独查询每个表并获得每个表的最小时间戳,然后在代码中进行比较,但我认为必须有更有效的方法。

我想这样做因为,我想为NEXT过期日期安排警报,而不是为所有时间戳安排警报。我正在使用SQLITE。

任何帮助?

2 个答案:

答案 0 :(得分:1)

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);

答案 1 :(得分:1)

我认为最好的方法是从其中3个形成统一的选择查询,例如,如果表A有3列而表B有两列,则为它们写入三列选择并使用例如&# 39;'作为第3列。然后你可以使用UnionOrder来实现最终查询。(因为我不知道你的表结构我只使用了A. ,b。, ℃。*)

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