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
"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