SQLite3 EXCEPT语句无法按预期工作

时间:2017-01-27 16:28:41

标签: sql sqlite

我有一个表格,其中包含有关电子邮件的一些信息以及这些电子邮件的唯一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

这怎么可能?

1 个答案:

答案 0 :(得分:0)

解决方案是,VIEWS是动态的,因此每次使用时都会计算......由于使用了random(),每次都会导致视图中出现不同的ID。