各位大神安安 :
廢渣一般的我又遇到問題了!我在 MySQL 命令列運行如下指令 OK
SELECT * FROM brands LIMIT 1 OFFSET 8;
但是我運行如下指令卻會報錯
DELETE FROM brands LIMIT 1 OFFSET 8;
難道 DELETE 真的無法和 LIMIT、OFFSET 結合使用嗎?我有做一定程度的 google 搜尋但是得到的答案都不行,各位大神請救救我吧!
您面臨的問題與 DELETE 與 LIMIT 和 OFFSET 的組合無關,而是與 DELETE 語句的語法有關。
在 MySQL 中將 LIMIT 和 OFFSET 與 DELETE 語句一起使用的正確語法與您的嘗試略有不同。 這是正確的語法:
DELETE FROM brands ORDER BY some_column LIMIT 1 OFFSET 8;
將 some_column 替換為要用於對 Brands 表中的行進行排序的適當列。 這是必要的,因為與 SELECT 語句不同,DELETE 語句本質上沒有順序的概念
TO [shruti07] : 其實弱弱的我看網路教材說在 DELETE 時加上 LIMIT 1 是個好習慣,因為這樣能避免一次刪掉太多東西,我從 GitHub 下載的資料庫每一個表都有 id,所以我會在秀作品的時候直接輸入 id 模擬刪資料。感謝大神的回答!弱弱的我因為換領域目前功力跟程式補習班結訓生差不多,頂多就是以前做過韌體比較習慣 code,一起加油吧!
網路教材說在 DELETE 時加上 LIMIT 1 是個好習慣,因為這樣能避免一次刪掉太多東西....
這是錯誤觀念!! 要就加上過濾條件,刪應該刪的.
刪錯的話,即使是一筆,也是不對的.
你在銀行裡的存款,要是被刪了,這樣可以嗎?
少看一些有的沒的網路教材,現在很多都不懂又亂教.
TO [一級屠豬士]:大神說的是!不過坦白講我做『自認』程式設計補習班等級的作品的確有很多地方取材於網路,但是基礎觀念的架構還是看歐萊禮的書慢慢建立的。在 WHERE 加上過濾條件當然是正確的,聽大神一說我也覺得頗奇怪,資料多刪一筆和多刪十筆都是錯,即使加上 LIMIT 限制刪錯的數量但錯就是錯,過濾條件還是最重要的吧!
就先把手頭上的書,好好練習. 先模仿,再慢慢修改.
加油!
不知道你現在是看什麼書/網頁在學 MySQL
以MySQL官網文件為例
DELETE 的語法只有使用 LIMIT 的可能性
沒有什麼 LIMIT 搭配 OFFSET
就我印象中的 SQL 教學資料
SELECT/UPDATE/INSERT/DELETE 通常第一個學的會是 WHERE
而不是什麼 LIMIT , OFFSET
TO [海綿寶寶] : 大神您好!弱弱的我之前看的是歐萊禮的『PHP、MySQL 與 JavaScript 學習手冊』;目前正在做程式補習班等級的作品;搞定作品後要 K『RESTful Web Client 技術手冊:不隨時間變化可重複運行的設計方法』(也是歐萊禮),最後要實戰 GitHub 專案。還記得弱弱的我第一份工作是相機韌體 UI 設計,code 裡面有一堆 flag (比如要把九宮格改成六宮格就把 define 裡的 9 改成 6),所以我想藉由鑽研 GitHub 專案培養我看 PHP 和 JavaScript code 的能力,那個專案叫 onlineshop,但是 GitHub 上也有一堆跟她同名的專案所以我忘記是哪個了。
歐萊禮的書我沒有意見
只有建議你先把時間花在書上有寫的技術
等到都學會了
再去研究書上沒寫的技巧
TO [海綿寶寶] : 感謝大神的建議。其實弱弱的我也是有把書看過一遍,但是不至於到背起來的程度,呵呵~