Sqlite 如何知道行是否不存在?

Sqlite 如何知道行是否不存在?,sqlite,Sqlite,我有以下疑问: SELECT rowid FROM table1 ORDER BY RANDOM() LIMIT 1 我还有另外一张桌子。在该表中,我有table1_id和table2_id列。table1_id是指向table1中的行的链接,table2_id是指向另一个表中的行的链接 我希望在我的查询中只得到表3中定义的那些结果。只有那些在table1_id列中有table1 rowid的用户。可能根本没有任何列引用某个table1 rowid,因此在本例中,我不想接收它们 我怎样才能达到

我有以下疑问:

SELECT rowid FROM table1 ORDER BY RANDOM() LIMIT 1
我还有另外一张桌子。在该表中,我有table1_id和table2_id列。table1_id是指向table1中的行的链接,table2_id是指向另一个表中的行的链接

我希望在我的查询中只得到表3中定义的那些结果。只有那些在table1_id列中有table1 rowid的用户。可能根本没有任何列引用某个table1 rowid,因此在本例中,我不想接收它们

我怎样才能达到这个目标

更新:我尝试了以下查询,但无效:

SELECT rowid FROM table1
WHERE rowid IN (SELECT table1_id FROM table3 WHERE table1_id = table1.rowid)
ORDER BY RANDOM() LIMIT 1
此查询意味着从表1中随机选择一行,该行在表3中有一个条目

表1中的每一行只要在表3中至少被引用一次,被选择的可能性都是相同的


如果您试图获得多个结果,则应删除ORDER BY RANDOM LIMIT 1子句。

如果您想选择多个rowid,则需要在感兴趣的表之间进行选择。SQLite没有完整的标准连接功能,因此您需要重新处理查询,以便它可以使用一个新的连接

SELECT rowid FROM table1
WHERE rowid IN ( SELECT DISTINCT table1_id FROM table3 )
ORDER BY RANDOM() LIMIT 1;
SELECT table1.rowid, table1.other_field
FROM table3
    LEFT OUTER JOIN table1 ON table3.table1_id = table1.rowid
ORDER BY RANDOM()
LIMIT 1;