n1reu
n1reu

Reputation: 87

MySQL INSERT INTO failing at WHERE clause

Ok, I'm stumped on this one:

mysql> INSERT INTO item (col1) VALUES ('testing') WHERE item_name = 'server1';

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE item_name = 'server1'' at line 1

Here's the table desc (slightly sanitized):

mysql> desc item;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int(11)      | NO   | PRI | NULL    | auto_increment | 
| item_name    | varchar(128) | YES  |     |         |                | 
| active       | int(11)      | NO   |     | 0       |                | 
| col1         | varchar(512) | YES  |     | NULL    |                | 
+--------------+--------------+------+-----+---------+----------------+

]I've tried some variations on the INSERT, but I've gotten nowhere. Look forward to someone revealing whatever obvious thing I'm missing!

Running: mysql Ver 14.12 Distrib 5.0.95, for redhat-linux-gnu (x86_64) using readline 5.1 (I know it's older, but I can't upgrade this box at the moment).

Upvotes: 0

Views: 83

Answers (2)

pala_
pala_

Reputation: 9010

If you're looking to update an existing row, it's this:

UPDATE item
  SET col1 = 'testing'
  WHERE item_name = 'server1';

Upvotes: 2

Joël Salamin
Joël Salamin

Reputation: 3576

You're not using the INSERTstatement correctly, if you use VALUES clause you can't apply a WHERE condition on it.

Here is the same query with the appropriate syntax:

INSERT INTO item (col1)
SELECT 'testing'
FROM yourTable
WHERE item_name = 'server1';

Hope this will help you.

Upvotes: 1

Related Questions