2013-10-20 32 views
1

======= 我是SQL中的新手。我一直试图做的一天(在通过这里和在互联网上的几十个主题之后)是一项简单的任务:将一列从表中复制到另一个具有条件的表中

我想将列“数字”从表B移动到表A与条件,即数归因对应于同一姓名如表B.

表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 ; 

它不工作:( 对不起,我是一个令人不安的小白,但我真的不知道该怎么办。

ERROR near A syntax?

+1

告诉我们您正在使用 –

+0

我使用SQLitespy版本3.8.0.2 – Rsmusic

回答

0

看来sqlite不支持联接上UPDATE

你可以解决它在两个方面:

IF NAMESURNAMEAAAPRIMARY KEY你可以这样做:

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 

这将在AAANUMBERBBB每个记录做一个INSERT OR REPLACE

sqlfiddle demo

否则,你可以这样做:

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

sqlfiddle demo

+0

Oohh谢谢什么的DMB非常,你摇滚! 我可以用第二个选项使用INNER JOIN吗?它做的是完全一样的东西吗? – Rsmusic

+0

@Rsmusic。 NOP。第二个查询不能有内部连接,这是你的工作原理。 :P。 –

相关问题