SQLite3 EXCEPT 语句未按预期工作



>我有一个表格,其中包含有关电子邮件的一些信息以及这些电子邮件的唯一ID。我想从此表中拆分出一些随机电子邮件:

CREATE VIEW trainview AS SELECT id FROM mails ORDER BY random() LIMIT 1,400;

现在我想拆分另外几封不在"trainview"视图中的随机邮件:

CREATE VIEW helper AS SELECT id FROM mails EXCEPT SELECT id FROM trainview;`
CREATE VIEW testview AS SELECT id FROM helper ORDER BY random() LIMIT 1,200;

据我了解,testview应该只包含不在trainview中的ID,但是:

sqlite> SELECT count(testview.id) FROM trainview, testview WHERE testview.id=trainview.id;
18

这怎么可能?

解决方案是,视图是动态的,因此每次使用它们时都会计算......这导致每次视图中都有不同的 ID,因为使用了 random()。

最新更新