2

いくつかのフィールドを更新するために検索したSQLを見つけましたが、タイトルのエラーが発生しました:

UPDATE a
SET a.json = 'ex', a.last_save = 'ex', a.carte = 'ex'
FROM partie_l AS a
INNER JOIN carte AS b
ON a.start_carte = b.hash
WHERE b.json = 'ex' AND a.start_joueurs = 'ex' AND a.param = 'ex'

データをexに置き換えました。そうしないと、長すぎます。

これが私のテーブルの構造です。

CREATE TABLE "carte" ("hash" TEXT  NOT NULL PRIMARY KEY ,"json" TEXT NOT NULL ,"nb_jrs" INTEGER,"preview" BLOB, "creator" TEXT DEFAULT atoll, "name" TEXT, "tetra" BOOL)

CREATE TABLE "partie_l" ("id" INTEGER PRIMARY KEY  NOT NULL ,"json" TEXT,"create" DATETIME,"last_save" DATETIME,"start_carte" TEXT,"preview" BLOB,"param" TEXT,"start_joueurs" TEXT,"carte" TEXT, "name" TEXT)

編集:Sqliteは内部結合をサポートしていません

4

1 に答える 1

1

更新するテーブルにテーブルエイリアスを使用しないようにしてください。

UPDATE partie_l 
SET json = 'ex', 
    last_save = 'ex',
    carte = 'ex' 
FROM partie_l 
    INNER JOIN carte AS b 
    ON partie_l.start_carte = b.hash 
WHERE b.json = 'ex' AND partie_l.start_joueurs = 'ex' AND partie_l.param = 'ex' 

SQLiteの場合は試してください

UPDATE partie_l 
SET json = 'ex', 
    last_save = 'ex',
    carte = 'ex' 
WHERE partie_l.start_joueurs = 'ex' 
AND partie_l.param = 'ex' 
AND partie_l.start_carte IN (SELECT hash FROM carte WHERE json='ex')
于 2012-09-01T20:48:34.220 に答える