这似乎是一个简单的问题,但不幸的是我找不到例子。更新PHP的最后10条记录Mysql表
假设我想使用UPDATE语句进入php来更新数据库“用户”的表“用户”的最后10条记录。它的代码是什么?我的意思是插入句子有一个
答案,使用LIMIT等,但更新没有它。
在此先感谢您的帮助。
pd:例如,我想在最近的10条记录中用“迈克尔”字更新“名字”字段。
这似乎是一个简单的问题,但不幸的是我找不到例子。更新PHP的最后10条记录Mysql表
假设我想使用UPDATE语句进入php来更新数据库“用户”的表“用户”的最后10条记录。它的代码是什么?我的意思是插入句子有一个
答案,使用LIMIT等,但更新没有它。
在此先感谢您的帮助。
pd:例如,我想在最近的10条记录中用“迈克尔”字更新“名字”字段。
试试这个
UPDATE table SET notes="hi"
ORDER BY id DESC
LIMIT 10
按mysql的文档,如果有一个唯一的列,以便通过它DESC和使用LIMIT 10来选择最后的10条记录。
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
感谢@rizon第一个更新句子的作品,但相反“嗨”,我们必须使用'嗨'。 – JuanFernandoz
您还没有提供任何输入到你的表的模式,但在这里是什么想法可以工作:
UPDATE users SET firstname='michael' WHERE id >= (SELECT MAX(id)-10 FROM users);
部分作品@sixeightzero由于某种原因,查询做24行更新,而不是10. – JuanFernandoz
你可以做这样的事情。
方法1
UPDATE table_name SET column_name='value' WHERE id IN (SELECT id FROM table_name ORDER BY id desc LIMIT 0, 10);
方法2
如果你看一下docs
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
这意味着下面也应该为你工作
UPDATE table_name SET column_name='value' ORDER BY id desc LIMIT 10;
尝试其中一种适合您的方法,并让我知道您是否有任何问题。
嗨@Dasun第一种方法返回“此版本的MySQL尚不支持'LIMIT&IN/ALL/ANY/SOME子查询”这是一个新的mysql功能? – JuanFernandoz
我不太确定这个问题是什么,让我来研究一下。尝试方法2,这将肯定工作。 – Techie
第二种方法显示了这一点:您的SQL语法有错误;检查对应于你的MySQL服务器版本的手册,在第一行 (我以前试过没有成功)附近的'10'使用正确的语法。 – JuanFernandoz
除非您指定SQL,否则SQL没有顺序。所以你需要有一个条件来对你的表中的数据进行排序。什么会使排成为最后10个之一?从显示最后10条记录的SELECT查询开始。将该查询添加到您的问题。这会给你很快的答案。 – hakre
用户表中是否有任何唯一的自动增量列? – rizon