12

SQLite テーブルの列で選択した値を更新しようとしています。基準が満たされたメインテーブルのセルの更新のみが必要であり、サブテーブルから取得した個々の値にセルを更新する必要があります。

次の構文を試しましたが、1 つのセルしか更新されません。すべてのセルがサブテーブルの最初に選択された値に更新される代替手段も試しました。

UPDATE maintable
SET value=(SELECT subtable.value FROM maintable, subtable
WHERE  maintable.key1=subtable.key1 AND maintable.key2=subtable.key2)
WHERE EXISTS (SELECT subtable.value FROM maintable, subtable
WHERE  maintable.key1=subtable.key1 AND maintable.key2=subtable.key2)

適切な構文は何ですか?

4

4 に答える 4

23

でこれを行うことができupdate selectますが、一度に 1 つのフィールドしか実行できません。Sqlite が update ステートメントでの結合をサポートしていればいいのですが、そうではありません。

これは関連する SO の質問です。 SQL Server で SELECT から UPDATE を行うにはどうすればよいですか? 、ただし SQL Server の場合。似たような回答があります。

sqlite> create table t1 (id int, value1 int);
sqlite> insert into t1 values (1,0),(2,0);
sqlite> select * from t1;
1|0
2|0
sqlite> create table t2 (id int, value2 int);
sqlite> insert into t2 values (1,101),(2,102);
sqlite> update t1 set value1 = (select value2 from t2 where t2.id = t1.id) where t1.value1 = 0;
sqlite> select * from t1;
1|101
2|102
于 2014-01-16T03:24:43.783 に答える
5

次のような INSERT OR REPLACE ステートメントを使用する必要があります。

maintable に key、c​​ol2、col3、col4 の 4 つの列があり
、サブテーブルの一致する値で col3 を更新するとします。

INSERT OR REPLACE INTO maintable
SELECT maintable.key, maintable.col2, subtable.value, maintable.col4
FROM maintable 
JOIN subtable ON subtable.key = maintable.key
于 2013-03-15T04:34:47.743 に答える