2011-11-23 130 views
1

我有一个MAssive的SQL查询...它的几个表我内连...现在,我不得不更新他们.. 。 和之后是一个方式,我试图让update语句的工作,但是...我显然我没有成功..SQL如何更新左连接的表?

我的SQL查询

select t1.name AS DistroName,t2.name AS OriginName, t3.name AS DesktopName, t3.name AS desktoptest , t2.country, t1.status, t2.description , t5.name as oldtest, t6.name as multitest, t4.name as begintest 
from alldistros t1 
LEFT join origin t2 on t1.name=t2.name 
LEFT join desktop t3 on t2.name=t3.name 
LEFT join beginnerdistributions t4 on t3.name=t4.name 
LEFT join oldcomputers t5 on t4.name=t5.name 
LEFT join multimedia t6 on t5.name=t6.name 
WHERE t1.name = 'Absolute LInux' 

现在我该怎样更新,可以说例如t1.name字段为“CatMan”,其中t1.name ='绝对LInux'?

我简直无法看到这样做,在这种特殊情况下的任何逻辑的方式...

谢谢阮

回答

1
UPDATE alldistros SET name="CatMan" WHERE name = "Absolute Linux" 

我认为你得到表和查询的概念混淆。

+0

但你看到在我的数据库中的多个表中有'名称'字段。 和名称“绝对Lunux”可以在任何一个3表中。 这就是为什么我第一次加入他们。 – mrbunyrabit

+0

在这种特殊情况下,由于所有名称都相同,因此您可以将上述查询应用六次,每个表一次。 – Godwin

+0

ahhhhhhhhhhh这有点聪明..... oky kwl,即时通讯gona尝试,thanx。将让你知道它是如何去 – mrbunyrabit

0

会为你工作吗?

UPDATE alldistros 
SET name = "CatMan" 
from alldistros t1 
LEFT join origin t2 on t1.name=t2.name 
LEFT join desktop t3 on t2.name=t3.name 
LEFT join beginnerdistributions t4 on t3.name=t4.name 
LEFT join oldcomputers t5 on t4.name=t5.name 
LEFT join multimedia t6 on t5.name=t6.name 
WHERE t1.name = 'Absolute LInux' 

也许我错读的问题,你要更新所有表的名称列在名称是你在找什么?

+0

我试过这个,但在这个声明中的错误。而且我试过写'catman'就像'catman' 但是还是一个错误 – mrbunyrabit

+0

我知道这个很老,但是你看到的错误是什么? – szeliga

+0

它表示“距离近的语法错误”=) – mrbunyrabit