2013-11-23 36 views
0

为了澄清,我提出的问题是,“更改索纳塔所有成员的电子邮件[email protected],其中lastname是成员的真实姓氏”。如何更改所有ID的记录,JOIN和连接

有三个问题表。前两位是会员,第二位是艺术家,他们使用xRefArtistsMembers相关。它们分别是:

Members 
------- 
MemberID, Firstname, Lastname, Address, Email 

Artists 
------- 
ArtistID, ArtistName, City, Region, WebAddress 

XrefArtistsMembers 
------------------ 
ArtistID, MemberID 

我制定了以下查询:

alter a.* 
from artists a 
left join xrefartistsmembers x on x.artistid = a.artistid 
left join members m on m.memberid = x.memberid 
and m.email = m.lastname + ' % @sonata.org'; 

不幸的是,它不编译。再说一次,我的想法是,如何改变Sonata所有成员的邮件[email protected],其中lastname是成员的真实姓氏。

+0

ALTER用于改变表结构,在这里你需要使用更新 – Satya

+0

OK如果更新,我需要使用SET – user2948897

+0

你需要什么来改变电子邮件? – Barmar

回答

1
UPDATE members m 
JOIN xrefartistsmembers x ON x.memberid = x.memberid 
JOIN artists a ON x.artistid = a.artistid 
SET m.email = whatever 
WHERE m.email = CONCAT(m.lastname, '@sonata.org') 

我不确定JOIN的点是什么。也许这更简单的查询就足够了:

UPDATE members m 
SET m.email = whatever 
WHERE m.email = CONCAT(m.lastname, '@sonata.org') 
+0

我们需要连接,因为奏鸣曲的成员是一个ArtistName。这可能有助于有记录.. – user2948897

+0

你的意思是'无论'会使用'艺术家'的东西吗?好。 – Barmar

0

对于任何数据库

UPDATE Members SET Email='new email' 
WHERE Email = Lastname + '@sonata.org' 
     AND MemberID IN (SELECT MemberID FROM XrefArtistsMembers) 
相关问题