mysql pdo 使用 LEFT JOIN 更新记录

mysql pdo update record using LEFT JOIN

"UPDATE tablename1  AS t1 LEFT JOIN
tablename2 AS t2 ON t1.pin = t2.pin AND t1.status = t2.status LEFT JOIN
tablename3 AS t3 ON t1.pin = t3.pin AND t1.status = t3.status LEFT JOIN
tablename4 AS t4 ON t1.pin = t4.pin AND t1.status = t4.status LEFT JOIN
tablename5 AS t5 ON t1.pin = t6.pin AND t1.status = t6.status LEFT JOIN
tablename6 AS t6 ON t1.pin = t6.pin AND t1.status = t6.status LEFT JOIN
SET t1.status = : status,
    t2.status = : status,
    t3.status = : status,
    t4.status = : status,
    t5.status = : status,
    t6.status = : status
WHERE t1.pin = : pin
AND t1.status = : active "

这是我同时更新多个 table 的查询。一些 table 可能是空的,所以我使用了 LEFT JOIN,这样我只用值更新 table。但是我得到了这个错误 near 'SET t1.status = 'NotActive' AND t2.status = 'N' at line 7' 所以我所做的就是将 , 更改为 AND 我仍然遇到错误并且当我搜索错误 Uncaught exception 'PDOException' with message 'SQLSTATE[42000] 时我发现了大部分内容这是在有 reserved word 时出现的吗?据我所知,我的代码中没有保留字。

欢迎任何建议

UPDATE tablename1  AS t1 LEFT JOIN
tablename2 AS t2 ON t1.pin = t2.pin AND t1.status = t2.status LEFT JOIN
tablename3 AS t3 ON t1.pin = t3.pin AND t1.status = t3.status LEFT JOIN
tablename4 AS t4 ON t1.pin = t4.pin AND t1.status = t4.status LEFT JOIN
tablename5 AS t5 ON t1.pin = t6.pin AND t1.status = t6.status LEFT JOIN
tablename6 AS t6 ON t1.pin = t6.pin AND t1.status = t6.status LEFT JOIN ????
SET t1.status = : status,
    t2.status = : status,
    t3.status = : status,
    t4.status = : status,
    t5.status = : status,
    t6.status = : status
WHERE t1.pin = : pin
AND t1.status = : active

最后一个 LEFT JOIN 是什么????是否在 SET 部分左连接?

我认为你在这一行也有错别字:

tablename5 AS t5 ON t1.pin = t6.pin AND t1.status = t6.status LEFT JOIN

我认为你的意思更接近于此:

UPDATE tablename1  AS t1
LEFT JOIN tablename2 AS t2 ON t1.pin = t2.pin AND t1.status = t2.status 
LEFT JOIN tablename3 AS t3 ON t1.pin = t3.pin AND t1.status = t3.status 
LEFT JOIN tablename4 AS t4 ON t1.pin = t4.pin AND t1.status = t4.status 
LEFT JOIN tablename5 AS t5 ON t1.pin = t5.pin AND t1.status = t5.status 
LEFT JOIN tablename6 AS t6 ON t1.pin = t6.pin AND t1.status = t6.status
SET t1.status = : status,
    t2.status = : status,
    t3.status = : status,
    t4.status = : status,
    t5.status = : status,
    t6.status = : status
WHERE t1.pin = : pin
AND t1.status = : active