MySQL INSERT 語句:為什麼 WHERE 子句無效以及適當的替代方案
簡介:
MySQL 的 INSERT
語句將新行新增到表中。 一個常見的錯誤是在 WHERE
語句中使用 INSERT
子句,這在語法上是不正確的。本文解釋了該錯誤並提供了有效的替代方案。
錯誤的查詢與解釋:
以下查詢無效:
<code class="language-sql">INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;</code>
只有當存在有 Users
的行時,才會嘗試將值插入到 id = 1
中。 MySQL的INSERT
語句不支援WHERE
子句;它是為無條件插入而設計的。
正確的 MySQL INSERT 語法:
標準 INSERT
語法是:
<code class="language-sql">INSERT INTO table_name ( column1, column2, ... ) VALUES ( value1, value2, ... );</code>
WHERE
子句專門用於 SELECT
、UPDATE
和 DELETE
語句。
替代方法:
要實現條件插入或更新,請考慮以下選項:
id
是主鍵或唯一約束,只需插入新行:<code class="language-sql">INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);</code>
UPDATE
修改現有記錄:<code class="language-sql">UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;</code>
INSERT ... ON DUPLICATE KEY UPDATE
: 這結合了插入和更新。如果發現重複的按鍵(例如,現有的id
),則更新該行;否則,將插入新行:<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES(1, 160, 145) ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145;</code>
重要注意事項:
id
列:如果id
是自增的,則可以在INSERT
語句中省略它; MySQL會自動賦值。 INSERT ... ON DUPLICATE KEY UPDATE
文法:上面也可以寫成:<code class="language-sql"> INSERT INTO Users SET id = 1, weight = 160, desiredWeight = 145 ON DUPLICATE KEY UPDATE weight = 160, desiredWeight = 145; ``` This form is useful when updating only some columns.</code>
以上是為什麼 MySQL INSERT 語句中的 WHERE 子句無效?的詳細內容。更多資訊請關注PHP中文網其他相關文章!