1

======= 我是 SQL 的新手。我一天以来一直在尝试做的事情(在这里和互联网上经历了几十个主题之后)是一项简单的任务:

我想将“数字”列从表 B 移动到表 A,条件是该数字对应于与表 B 中相同的姓名和姓氏。

表 AAA:

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

 - Bob , Dylan  , 
 - Jimi, Hendrix ,

ETC

表 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

似乎sqlite不支持在UPDATE上加入。

您可以通过两种方式解决它:

IF NAMEand SURNAMEare PRIMARY KEYinAAA你可以这样做:

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 REPLACEAAANUMBERBBB

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 回答