0

だから私は列で最大時間を検索したいと思います:

sqlite> SELECT max(strftime('%Y-%m-%d %H:%M',time)) FROM posts WHERE thread_id=123456;
2012-10-02 02:31

このクエリによって返される各thread_idについて:

sqlite> SELECT thread_id FROM threads WHERE out_of_date=0;
111
123
187
...

次に、フィールドが最初のクエリで返されたフィールドlast_postと一致しないすべてのスレッドを検索し、フィールドを1に設定します。timeout_of_date

sqlite> UPDATE threads SET out_of_date=1 WHERE thread_id=123456 AND last_post!='2012-10-02 02:31';

問題は、これら3つの別々のクエリをどのように組み合わせるのかよくわからないことです。何かご意見は?

4

1 に答える 1

1

以下のSQLは、スレッドテーブルを正しく更新する必要があります。相関サブクエリを使用して、クエリの1番目と3番目を結合します。WHERE次に、その句を追加することにより、これを2番目のクエリと組み合わせることができます。

UPDATE threads T
SET out_of_date = 1
WHERE out_of_date = 0
    AND last_post != (
        SELECT MAX(strftime('%Y-%m-%d %H:%M',time))
        FROM posts
        WHERE thread_id = T.thread_id
    )
;
于 2012-10-04T21:55:30.007 に答える