所以我想在一列中搜索最长时间:
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
字段与第一个查询返回的time
字段不匹配的所有主题,并将out_of_date
字段设置为1:
sqlite> UPDATE threads SET out_of_date=1 WHERE thread_id=123456 AND last_post!='2012-10-02 02:31';
问题是,我不太确定如何组合这三个单独的查询。有什么想法吗?
答案 0 :(得分:1)
以下SQL应该正确更新线程表。它使用相关的子查询来组合第一个和第三个查询。然后,可以通过添加WHERE
子句将其与第二个查询结合使用。
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
)
;