1

3 つのテーブル A、B、C を持つデータベースがあるとします。これらのテーブルにはそれぞれタイムスタンプ列があります。

3 つのテーブルにクエリを実行して、タイムスタンプが最も小さい (現在に最も近い) 行を取得するにはどうすればよいですか。

それぞれを個別にクエリして、各テーブルの最小タイムスタンプを取得し、コードで比較できますが、もっと効率的な方法が必要だと思います。

すべてのタイムスタンプのアラームをスケジュールするのではなく、次の有効期限のアラームをスケジュールしたいので、それを行いたいです。私は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

たとえば、テーブル A に 3 つの列があり、テーブル B に 2 つの列がある場合、それらの両方に 3 つの列の選択を記述し、たとえば '' を 3 番目の列として使用します。 . 次に、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 に答える