2013-07-11 25 views
1

我试图更新MS Access数据库中的表,它包含了一些电影资料其他行值MS访问SQL:更换一个字段的字符串+

 

    [Table:Movies] 
    MovieName CrewId CrewMember 
    The Big Lebowski  1  Joel Coen 
    The Big Lebowski  2  Ethel Coen 
    The Big Lebowski  3  Carter Burwell 
    The Big Lebowski  4  Roger Deakins 
    The Matrix    1  Andy Wachowski 
    The Matrix    2  Lana Wachowski 
    The Matrix    3  Don Davis 
    The Matrix    4  Bill Pope 

CrewId 1是导演和2是CO /助理导演等等。

什么,我试图做的是与“导演姓名的助手”“船员”替换列联合导演的名字,像下面

 

    [Table:Movies] 

    MovieName CrewId CrewMember 
    The Big Lebowski  1  Joel Coen 
    The Big Lebowski  2  Assistant of Joel Coen 
    The Big Lebowski  3  Carter Burwell 
    The Big Lebowski  4  Roger Deakins 
    The Matrix    1  Andy Wachowski 
    The Matrix    2  Assistant of Andy Wachowski 
    The Matrix    3  Don Davis 
    The Matrix    4  Bill Pope 

我使用下面的查询这是给语法错误(缺少操作员)。

 

    UPDATE t1 
    SET t1.CrewMember = 'Assistant of '+ t2.CrewMember 
    FROM Movies t1, Movies t2 
    WHERE t1.MovieName = t2.MovieName 
    AND t1.CrewId = 2 
    AND t2.CrewId = 1; 

请帮我这个查询使用

+1

后,您替换“埃塞尔·科恩”和“LANA wachoswki” ,你打算在任何地方保留他们的名字? – PowerUser

+0

不,这将被新字符串替换。 btw Fabians解决方案工作。多谢你们。 – JSmith

回答

2

试试这个:

UPDATE Movies as t1, Movies as t2 
SET t1.CrewMember = 
'Assistant of ' + t2.CrewMember 
WHERE t1.MovieName=t2.MovieName AND t1.CrewId=2 AND t2.CrewId=1 
+0

非常感谢Fabian,我仍然不知道自己做错了什么但你的解决方案像一个魅力。 – JSmith

+2

没有从UPDATE子句语法,你需要把两个表中的UPDATE http://msdn.microsoft.com/en-us/library/office/bb221186(v=office.12).aspx –

+0

后哦对..想知道为什么没有人注意到.. .. – JSmith

1

在Access中,字符串concatonation完成 “&”

所以它应该是:

UPDATE t1 
    SET t1.CrewMember = 'Assistant of '& t2.CrewMember 
    FROM Movies t1, Movies t2 
    WHERE t1.MovieName = t2.MovieName 
    AND t1.CrewId = 2 
    AND t2.CrewId = 1; 
0

我猜测的原因是因为Access中的字符串连接运算符是&而不是+。另外,我觉得接入需要as对表的别名,你可以使用一个join的条件:

UPDATE t1 
    SET t1.CrewMember = 'Assistant of '+ t2.CrewMember 
    FROM Movies as t1 join 
     Movies as t2 
     on t1.MovieName = t2.MovieName 
    where t1.CrewId = 2 AND t2.CrewId = 1; 
+0

感谢您的回复。我想你先提出独立,然后在同一时间一切,但我仍然得到同样的错误。 ' 语法错误(缺少运算符)查询表达式“助理 '&t2.CrewMember FROM影点t1 JOIN影为t2 ON t1.MovieName = t2.MovieName'。 ' 和它突出在查询驳回错误对话框后 – JSmith

+0

@JSmith,在您的错误信息,它看起来像你同时使用一张双人床和一个单引号。虽然你可以使用一个或另一个,你就不能互换在同一语句中使用它们。试着只是一方或另一方,即'“助理”&' – PowerUser

+0

我注意到,并重新检查了我的查询。我在查询字符串中使用单引号。开幕双引号只出现在错误信息,它的奇怪。 – JSmith