在SQL Server中,我可以这样做:
UPDATE tbl1 SET col2 = tbl2.col2
FROM table1 tbl1 INNER JOIN table2 tbl2 ON tbl1.col1 = tbl2.col1
Run Code Online (Sandbox Code Playgroud)
我没有打扰一下,这是否是任何SQL标准或不的一部分,我敢肯定还有其他的方法来做到这一点,但它是令人叹为观止的有用.
这是我的问题.我需要使用SQLITE3 在SQL(即非宿主语言)中执行类似的操作.可以吗?
Tre*_*son 22
这适用于sqlite:
UPDATE tbl1 SET col2 = (SELECT col2 FROM tbl2 WHERE tbl2.col1 = tbl1.col1)
Run Code Online (Sandbox Code Playgroud)
小智 5
只是为了强调 Geogory Higley 的帖子:
UPDATE tbl1 SET col2 = (SELECT col2 FROM tbl2 WHERE tbl2.col1 = tbl1.col1)
我在更新 tbl1 中 tbl2 中不存在的列时遇到问题。
请参阅http://sqlite.phxsoftware.com/forums/p/1708/7238.aspx上的 cheetah 帖子,其中指向:
http://www.mail-archive.com/sqlite-users@sqlite.org/msg27207.html
代码是:
insert or replace into foo (id, name, extra)
select bar.id, bar.name, foo.extra
from bar
left join foo
on bar.id = foo.id;
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常。不同网站上似乎有很多帖子推荐第一种方法,因此有点令人困惑。如果您使用这种方法,我建议您非常仔细地测试您的输出,这种方法看起来确实更快并且可以与匹配的表一起使用。