1

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

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

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

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

有什么帮助吗?

4

2 回答 2

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);
于 2012-11-12T05:52:19.067 回答
1

我认为最好的方法是从其中的 3 个中形成一个统一的选择查询,例如,如果表 A 有 3 列,表 B 有两列,则为它们编写一个三列选择并使用例如 '' 作为第三列. 那么你可以使用Unionand Orderby 来实现你的最终查询。(因为我不知道你的表结构我只是使用了 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
于 2012-11-12T06:29:29.367 回答