带有左表限制的SQLite内连接

时间:2015-03-13 13:52:32

标签: python sql sqlite inner-join

首先,让我描述一个类似于我面临的情景;更好地解释我的问题。在这种情况下,我正在创建一个系统,需要从表中选择“n”个随机博客帖子,然后获取所选帖子的所有回复。

想象一下我的结构:

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

1 个答案:

答案 0 :(得分:0)

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

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引用了什么。