【发布时间】:2016-04-10 19:44:14
【问题描述】:
我正在尝试从另一个 10 行表 (newdb.Peeps) 对 10 行表 (olddb.People) 运行更新。
sqlite> ATTACH DATABASE 'D:/tutorial2.db' AS olddb;
sqlite> ATTACH DATABASE ':memory:' as newdb;
sqlite> CREATE TABLE IF NOT EXISTS newdb.Peeps(unix INT, datestamp INT, value INT);
sqlite> INSERT INTO newdb.Peeps SELECT * FROM olddb.People;
sqlite> UPDATE newdb.Peeps SET datestamp = 20, value = 45 WHERE unix = 10;
sqlite> UPDATE newdb.Peeps SET datestamp = 20, value = 45 WHERE unix = 14;
sqlite> SELECT * FROM olddb.People;
10|150|5
11|165|5.5
12|180|6
13|195|6.5
14|210|7
15|225|7.5
16|240|8
17|255|8.5
18|270|9
19|285|9.5
sqlite> SELECT * FROM newdb.Peeps;
10|20|45
11|165|5.5
12|180|6
13|195|6.5
14|20|45
15|225|7.5
16|240|8
17|255|8.5
18|270|9
19|285|9.5
sqlite> UPDATE olddb.People SET datestamp = (SELECT datestamp FROM newdb.Peeps WHERE unix = newdb.Peeps.unix), value = (SELECT value from newdb.Peeps WHERE unix = newdb.Peeps.unix);
sqlite> SELECT * FROM olddb.People;
10|20|45
11|20|45
12|20|45
13|20|45
14|20|45
15|20|45
16|20|45
17|20|45
18|20|45
19|20|45
sqlite> SELECT * FROM newdb.Peeps;
10|20|45
11|165|5.5
12|180|6
13|195|6.5
14|20|45
15|225|7.5
16|240|8
17|255|8.5
18|270|9
19|285|9.5
如您所见,olddb.People 的所有行都使用 newdb.Peeps 第一行的值进行了更新。
我的意图是使用 newdb.Peeps 中相应行的值更新 olddb.People 中的每一行,使用该行的第一个值(unix)。
感谢您的帮助。
【问题讨论】:
标签: sql database sqlite sql-update