mysql - 在同一张表上使用 JOIN 更新 MySQL 表?

标签 mysql join sql-update

我有一个表存储链接到帐户的 session 哈希:

Sessions table

我想更新表中属于某个帐户的每个条目,但我没有该帐户的 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/

相关文章:

mysql - Java 中的 EBean - 使用 @MappedSuperclass 进行继承

MySQL 慢分组依据/排序依据

sql - 2 个表上的简单内连接导致错误的估计行和性能下降

mysql - 使用连接更新多个表

c# - sql ExecuteNonQuery 不更新 C# 中的数据库

php - 从数百个推特个人资料中高效地获取和存储推文?

php - MYSQLi 不返回任何行,即使它具有有效的 SQL 和 PHP 语法

php - 无法使用 PHP 将 passwordHash 发送到 MySQL 表

带有联合和左连接的 mysql 查询很慢

sql - PSQL 连接 - 列 "table.column"不存在