mysql - 是否可以在 UPDATE 的 WHERE 部分使用 Max()

标签 mysql sql-update max

PHP 版本 7.0 mysql版本5.5

我正在尝试对现有记录执行更新。我搜索 max(DateTime) 以获取最后一条记录。 DateTime 是关键字段,类型为 DateTime。当我找到该记录 (email_sent) 时,我希望更新一个字段。

我的代码:

    UPDATE $mysqldb SET email_sent='1', WHERE (DateTime=SELECT max(DateTime) FROM $mysqldb)

$mysqldb 已预先定义。代码无法在控制台中运行,在“WHERE...”附近出现 1064 错误。我尝试过在 WHERE 部分使用括号对几种不同的方式进行分组...没有乐趣。我确信这很简单(我希望!)。我已经搜索了几个小时,现在试图找到一个示例并阅读文档。任何帮助表示赞赏!

最佳答案

我认为问题在于 WHERE 子句之前的逗号。另外,虽然我没有使用 MySQL 的经验,但在 Oracle 中,我相信您需要将“SELECT MAX(...)”部分放在括号之间。最后,使用表别名也没什么坏处,这样可以更容易地区分每个上下文。试试这个:

UPDATE $mysqldb t1 SET t1.email_sent='1' WHERE (t1.DateTime=(SELECT max(t2.DateTime) FROM $mysqldb t2))

关于mysql - 是否可以在 UPDATE 的 WHERE 部分使用 Max(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59956237/

相关文章:

mysql - 为什么在重新同步 mysql slave 时出现 'reset master'

mysql - SQL 获取、编辑和更新数据

PHP 更新现有记录失败

matlab - 如何获取matlab数组中最大的元素索引

php - 使用php统计Mysql表中值的数量

mysql - 如何在C中将未知的字符集字符串插入MariaDB表

php - 获取具有相同 id 的多个表的信息

sql - PostgreSQL 8.3 中具有非空和唯一约束的增量字段

mysql - 如何检索mysql中 "count"列之前的最后一个id值?

c - 增加 char 数组的最大大小