使用join-in-select更新不起作用

zqdjd7g9  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(344)
update tableA 
set tableA.col3 = col2 
from (select tableA.col1, tableB.col2 from 
tableA inner join tableB on tableA.col1=tableB.col4 and 
tableA.col3!=tableB.col2 limit 10)  
where tableA.col1 = col1;

sql语法有错误;请查看与您的mysql服务器版本对应的手册,以获得使用near'from(select。。。
虽然下面的select语句可以正常工作,但上面的更新有什么问题

select tableA.col1, tableB.col2 
from tableA 
inner join tableB on tableA.col1=tableB.col4 
    and tableA.col3!=tableB.col2 limit 10
5ktev3wc

5ktev3wc1#

你这里少了一些化名

update tableA set tableA.col3=col2

应该是的

update tableA set tableA.col3= tableB.col2

这里呢

where tableA.col1=col1;

应该是

where tableA.col1 = tableB.col1;
ffscu2ro

ffscu2ro2#

试试这个:

UPDATE tableA 
INNER JOIN tableB 
ON tableA.col1=tableB.col4 
AND 
tableA.col3!=tableB.col2
SET tableA.col3 = tableB.col2;

或者用你的 SELECT 查询,因为我不清楚你想如何更新表。

UPDATE tableA 
 INNER JOIN (
             select tableA.col1, tableB.col2 
             from tableA 
             inner join tableB 
             on tableA.col1=tableB.col4 
             and tableA.col3!=tableB.col2 limit 10
            ) AS t
ON tableA.col1 = t.col1
SET tableA.col3 = t.col2

的一般语法 UPDATE 具有 JOIN :

UPDATE T1, T2,
[INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1
SET T1.C2 = T2.C2, 
    T2.C3 = expr
WHERE condition

相关问题