在sqlite3中:将列从一个表复制到另一个表

在sqlite3中:将列从一个表复制到另一个表,第1张

概述有关此主题的其他几个stackoverflow查询,但没有一个有令人满意的答案. 我有一个表BeerReviews,它缺少一个列(review_text),另一个表BeerReviewsWithText缺少一个不同的列(brewery_name).否则表行的排序方式相同,所以我想简单地将BeerReviews中的brewery_name列追加到BeerReviewsWithText中. 我将sql 有关此主题的其他几个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 BeerRevIEwsWithTextSET beer_brewername = (SELECT brewery_name                       FROM BR.BeerRevIEws)

然后只使用子查询返回的第一条记录.

您必须编写一个子查询,该子查询返回单个记录,但外部表中的每个记录都有不同的记录.这称为相关子查询:

UPDATE BeerRevIEwsWithTextSET beer_brewername = (SELECT brewery_name                       FROM BR.BeerRevIEws                       WHERE ID = BeerRevIEwsWithText.ID)

(这假设您有一个ID列作为主键.)

总结

以上是内存溢出为你收集整理的在sqlite3中:将列从一个表复制到另一个表全部内容,希望文章能够帮你解决在sqlite3中:将列从一个表复制到另一个表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1155128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存