2012-06-15 87 views
0

以下是我的查询和相关的错误。我究竟做错了什么?更新嵌套查询

update aaalogin 
    set name = 
     (select aaacontactinfo.emailid 
     from aaacontactinfo 
     WHERE aaalogin.user_id = aaausercontactinfo.user_id 
      and aaausercontactinfo.contactinfo_id = aaacontactinfo.contactinfo_id 
    ); 

我得到的

Error: Unknown column 'aaausercontactinfo.user_id' in 'where clause'

+0

不知道那是什么。你能详细说明吗? - 我是个白痴,我以为你在谈论关于mysql的东西。当我找到一个可行的答案时,我会接受答案。 –

+0

明天我会试试。晚上 – 2012-06-15 16:45:30

回答

0

aaausercontactinfo不包含在FROM表列表,请尝试使用:

UPDATE aaalogin SET name = 
(
    SELECT aaacontactinfo.emailid 
    FROM aaacontactinfo, aaalogin, aaausercontactinfo 
    WHERE aaalogin.user_id = aaausercontactinfo.user_id 
    AND aaausercontactinfo.contactinfo_id = aaacontactinfo.contactinfo_id 
); 
+0

获取错误“您无法在FROM子句中指定更新的目标表'aaalogin'。” –

0

尝试

UPDATE aaalogin SET name = 
(
    SELECT aaacontactinfo.emailid 
    FROM aaacontactinfo, aaausercontactinfo 
    WHERE aaalogin.user_id = aaausercontactinfo.user_id 
    AND aaausercontactinfo.contactinfo_id = aaacontactinfo.contactinfo_id 
); 

在无需aaalogin子查询。如果使用的话,它甚至可能会在子查询中返回多个记录。

+0

错误1062(23000):重复条目“ - ”键为'AaaLogin_UK10' –

+0

似乎您的名称列是唯一的,并且子查询返回现有名称' - ' – user1149201