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
引用了什么。
首先,让我描述一个与我面临的情况相似的场景;更好地解释我的问题。在这种情况下,我正在创建一个系统,该系统需要 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
引用了什么。