在同一个表上用JOIN更新MySQL表?

时间:2014-07-16 11:38:13

标签: mysql join sql-update

我有一个表,用于存储链接到帐户的会话哈希值:

Sessions table

我想更新表中属于某个帐户的每个条目,但我没有该帐户的ID。我必须从同一张桌子上拿到它。

目前这就是我的工作:

请注意,整个过程的唯一输入是会话哈希,名称为::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;

不起作用:Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.

我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果您无法停用safe mode,可以尝试

UPDATE adminSessions 
   SET sessionValid = FALSE
 WHERE adminSessionHash = :INPUT_ADMIN_HASH
   AND adminSessionID IS NOT NULL;

我不知道这是否足以说服MySQL您使用了KEY列。

P.S。你的JOIN完全没有任何帮助。