這似乎是一個簡單的問題,但不幸的是我找不到例子。更新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