1

我正在尝试使用电子邮件地址更新几行。T1.email 将根据 T2.name 中存在的 T1.name 使用 T2.email 进行更新。

目前,查询如下所示。

UPDATE T1
SET T1.email = T2.email
FROM Table1 T1
INNER JOIN Table2 T2 ON T1.name = T2.name
WHERE T1.name = T2.name
AND (Some conditions)
LIMIT 1398

这里提出了一个类似的问题,但给出了语法错误。 SQL UPDATE SET 一列等于另一列引用的相关表中的值?

我也尝试过使用 ANY 进行更新。

UPDATE Table1
SET Table1.email = ANY
    (
        SELECT Table2.email FROM Table2 
        WHERE Table1.accountid = 901234 
        AND Table2.pid = 123 
        AND Table2.email IS NOT NULL 
    )

WHERE Table1.name IN
    (
        SELECT Table2.name FROM Table2
        WHERE Table1.accountid = 19574
        AND Table2.pid = 123 
        AND Table2.email IS NOT NULL
    ) 

LIMIT 1398

目前,这会返回错误“SQL 错误 (1242):子查询返回超过 1 行”。

可能是复制和粘贴工作的开始!

4

1 回答 1

1

正如UPDATE语法中详述的那样,对于您想要的 MySQL:

UPDATE Table1 T1 JOIN Table2 T2 USING (name)
SET    T1.email = T2.email
WHERE  (Some conditions)
LIMIT  1398
于 2012-12-21T22:49:39.907 回答