在sqlite3中:将列从一个表复制到另一个表
有关此主题的其他几个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问题建议使用insert来填充列,但这会向表中添加新行,仅填充beer_brewername列. insert into BeerReviewsWithText(beer_brewername) select brewery_name from BeerReviews; 相反,更新似乎填充空值,但是当我运行以下(类似于another question’s answer)时,所有beer_brewername值都相同: update BeerReviewsWithText set beer_brewername=(select brewery_name from BR.BeerReviews); 这似乎是一种奇怪的行为,因为我在运行时获得了啤酒厂名称的预期列表: select brewery_name from BR.BeerReviews limit 50; 我是sqlite的新手,所以有人可以解释我做错了什么吗? 解决方法当您使用子查询作为表达式时,如下所示:UPDATE BeerReviewsWithText SET beer_brewername = (SELECT brewery_name FROM BR.BeerReviews) 然后只使用子查询返回的第一条记录. 您必须编写一个子查询,该子查询返回单个记录,但外部表中的每个记录都有不同的记录.这称为相关子查询: UPDATE BeerReviewsWithText SET beer_brewername = (SELECT brewery_name FROM BR.BeerReviews WHERE ID = BeerReviewsWithText.ID) (这假设您有一个ID列作为主键.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |