将列从表中复制到具有条件的另一个表

时间:2013-10-20 16:53:41

标签: sql sqlite join sql-update

======= 我是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 ; 

它不起作用:( 很抱歉是一个令人不安的菜鸟,但我真的不知道该怎么做。

A语法附近的错误?

1 个答案:

答案 0 :(得分:0)

似乎sqlite不支持UPDATE上的联接。

您可以通过两种方式解决这个问题:

如果NAME SURNAME PRIMARY KEY AAA 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 ,您可以这样做:

AAA

对于来自NUMBER的{​​{1}} BBB的每条记录,我们会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