我有一个表存储链接到帐户的 session 哈希:
我想更新表中属于某个帐户的每个条目,但我没有该帐户的 ID
。我必须从同一张表中获取它。
目前我是这样做的:
请注意,整个过程的唯一输入是 session 哈希,命名为::INPUT_ADMIN_HASH
首先我得到adminID:
SELECT admins_adminID FROM `adminSessions` WHERE `adminSessionHash` = :INPUT_ADMIN_HASH;
然后通过获得的adminID更新同一张表:
UPDATE `adminSessions` SET `sessionValid` = FALSE WHERE `admins_adminID` = :INPUT_ADMIN_ID
我想将它们组合成一个查询:
UPDATE
`adminSessions` AS a
INNER JOIN
`adminSessions` AS b ON a.`adminSessionID` = b.`adminSessionID`
SET
a.`sessionValid` = FALSE
WHERE
a.`adminSessionHash` = :INPUT_ADMIN_HASH;
它不起作用:错误代码:1175。您正在使用安全更新模式,并且您尝试在没有使用 KEY 列的 WHERE 的情况下更新表要禁用安全模式,请在首选项 -> SQL 中切换该选项查询并重新连接。
我做错了什么?
最佳答案
如果你不能禁用安全模式
,你可以试试
UPDATE adminSessions
SET sessionValid = FALSE
WHERE adminSessionHash = :INPUT_ADMIN_HASH
AND adminSessionID IS NOT NULL;
我不知道这是否足以让 MySQL
相信您使用了 KEY
列。
附言顺便说一句,您的 JOIN
完全没有任何帮助。
关于mysql - 在同一张表上使用 JOIN 更新 MySQL 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24779845/