关于这个话题,stackoverflow上有几个相关的问题,但是它们都没有令人满意的答案。
我有一个名为BeerReviews的表格,缺少一列(review_text),还有另一个名为BeerReviewsWithText的表格,缺少另一列(brewery_name)。除此之外,这两个表格的行是按照相同的顺序排列的,所以我想简单地将BeerReviews中的brewery_name列附加到BeerReviewsWithText中。
我启动sqlite3的方式如下:
sqlite3 beer_rewiews_with_text.sqlite
然后我通过以下方式附加啤酒评论表:
attach 'beer_reviews.sqlite' as BR
我通过以下方式向BeerReviewsWithText添加了一个空列:
alter table BeerReviewsWithText add column beer_brewername varchar;
Multiple other 问题建议使用插入来填充列,但这会将新行附加到表中,仅填充 beer_brewername 列。
insert into BeerReviewsWithText(beer_brewername) select brewery_name from BeerReviews;
相反,更新似乎填充了空值,但是当我运行以下代码(类似于另一个问题的答案)时,所有的beer_brewername值都是相同的:
update BeerReviewsWithText set beer_brewername=(select brewery_name from BR.BeerReviews);
这似乎是奇怪的行为,因为当我运行以下命令时,我得到了预期的酿酒厂名称列表:
select brewery_name from BR.BeerReviews limit 50;
我是sqlite的新手,所以有人能解释一下我做错了什么吗?
update main.BeerReviewsWithText set beer_brewername=(select brewery_name from BR.BeerReviews where brewery_id = main.BeerReviewsWithText.beer_brewerid);
brewery_id和beer_brewerid字段在每一行都匹配,但不是跨行的唯一标识符,因为每个酿酒厂都有很多评论。希望这没问题? - Alexander Tronchin-James