【问题标题】:How do I merge two sqlite tables using a "where" condition?如何使用“where”条件合并两个 sqlite 表?
【发布时间】:2014-07-27 13:20:37
【问题描述】:

我有两张桌子。其中之一具有“word”、“count”和“value”三列。第二个有两列“word”和“value”。在第二个表中,值列的每个字段都有一个附加的整数值。在第一个表中,“值”列为空或带有占位符值。

我想通过匹配“word”列将第二个表列“value”的值导入到第一个表列“value”中。

对于单行,命令类似于

update table1 set 'value' = "valuefromTable2" where 'word' = "matchingWordFromTable2";

由于我有大约 200k 行要更新,我宁愿使用潜在的 SQLite 功能(合并?)而不是逐行执行工作的一段代码。你知道如何实现吗?

【问题讨论】:

  • 你能显示表格布局、示例值和示例结果吗?这听起来很像加入。
  • 确实,Gordon Linoff 回答和 SQLITE3 中的跨表更新都有效。请注意,戈登忘记了“table2”和“t2”之间的点

标签: sql sqlite


【解决方案1】:

您可以使用update 中的相关子查询来做到这一点:

update table1
    set 'value' = (select value from table2 t2 where table1.word = t2.word);

【讨论】:

  • 谢谢,我认为它可以工作,但它会冻结我拥有的每个 SQLite 浏览器,并且需要永远执行。我最终做了一段代码,用我的表填充两个数据表,将它们合并到第三个,然后从头开始创建一个 SQLite 表。不是最好的方法,但在我的情况下最简单/最快
  • @Billybobbonnet 。 . .您可能只需要在table2(word) 上建立索引。
  • 我确定我在单词栏上有一个。查了之后,我没有。由于我从未使用过包含 50 万条记录的表,我认为这是因为它的大小。我的坏:-)
猜你喜欢
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多