SQLite 内部联接,左侧有限制 Table

SQLite Inner Join with Limit on Left Table

首先,让我描述一个与我面临的情况相似的场景;更好地解释我的问题。在这种情况下,我正在创建一个系统,该系统需要 select 'n' 来自 table 的随机博客帖子,然后获取这些 selected 帖子的所有回复。

想象一下我的结构:

blog_posts(id INTEGER PRIMARY KEY, thepost TEXT)  
blog_replies(id INTEGER PRIMARY KEY, postid INTEGER FOREIGN KEY REFERENCES blog_posts(id), thereply TEXT)

这是我当前的 SQL,但出现错误:

SELECT blog_post.id, blog_post.thepost, blog_replies.id, blog_replies.thereply 
FROM (SELECT blog_post.id, blog_post.thepost FROM blog_post ORDER BY RANDOM() LIMIT ?)  
INNER JOIN blog_replies
ON blog_post.id=blog_replies_options.postid;

这是错误:

sqlite3.OperationalError: no such column: hmquestion.id

您的查询需要为子查询添加一个别名。这将允许您在外部查询中引用子查询中的字段:

SELECT hmquestion.id, hmquestion.question,
   hmquestion_options.id, hmquestion_options.option  
FROM (SELECT hmquestion.id, hmquestion.question 
      FROM hmquestion ORDER BY RANDOM() LIMIT ?) AS hmquestion <--Add Alias Here
   INNER JOIN hmquestion_options
      ON hmquestion.id=hmquestion_options.questionid;

照原样,您的外部查询不知道 hmquestion 引用了什么。