1

======= 私は SQL の初心者です。私が 1 日間やろうとしてきたこと (こことインターネットで何十ものトピックを調べた後) は簡単な作業です。

表Bと同じ姓名に対応する番号が割り当てられていることを条件に、表Bから表Aに「番号」の列を移動したい。

表 AAA:

- [NAME], [SURNAME], [NUMBER] 

 - Bob , Dylan  , 
 - Jimi, Hendrix ,

テーブル BBB:

- [TYPE] [AGE] [TOWN] [NAME] [SURNAME] [NUMBER]
- Guitarist , 95 , Denver , Bob , Dylan  , 45
- Guitar , 45 , Paris , Jimi, Hendrix , 47
- Dancer , 40, New-york , Jimmy, Page , 69
- etc..

UPDATE AAA A 
set A.NUMBER = B.NUMBER 
FROM A INNER JOIN BBB B on A.NAME = B.name and A.SURNAME = B.SURNAME ; 

それは動作しません:(邪魔な初心者で申し訳ありませんが、どうすればよいかわかりません。

A構文の近くにエラーがありますか?

4

1 に答える 1

0

UPDATEsqliteでの結合をサポートしていないようです。

次の 2 つの方法で回避できます。

IFNAMEとあなたSURNAMEができることですPRIMARY KEYAAA

INSERT OR REPLACE INTO "AAA"(NAME,SURNAME,NUMBER)
SELECT "AAA".NAME,"AAA".SURNAME,"BBB".NUMBER
FROM "AAA"
INNER JOIN "BBB" ON "BBB".NAME = "AAA".NAME 
                AND "BBB".SURNAME = "AAA".SURNAME

これにより、from内のすべてのレコードに対してINSERT OR REPLACEが実行されます。AAANUMBERBBB

sqlfiddle demo

それ以外の場合は、次のことができます。

UPDATE "AAA"
SET NUMBER = (SELECT NUMBER
                  FROM "BBB"
                  WHERE "BBB".NAME = "AAA".NAME 
                    AND "BBB".SURNAME = "AAA".SURNAME);

sqlfiddle demo

于 2013-10-20T18:23:04.387 に答える