2015-04-07 5 views
0

Ok, я озадачен на это один:MySQL INSERT INTO неудачу в ИНЕКЕ

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 

Вот таблица убывание (слегка облагороженная):

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 |    | 
+--------------+--------------+------+-----+---------+----------------+ 

] Я пробовал несколько вариантов на INSERT, но я никуда не ушел. Посмотрите вперед, чтобы кто-то показал, какую очевидную вещь мне не хватает!

Запуск: mysql Ver 14.12 Распространение 5.0.95 для redhat-linux-gnu (x86_64) с использованием readline 5.1 (я знаю, что он старше, но я не могу обновить это поле в данный момент).

+1

Надежда этот ответ будет полезным: http://stackoverflow.com/a/485062/2451726 – Arulkumar

+0

INSERT INTO не поддерживает ГДЕ Этот http://stackoverflow.com/questions/485039/mysql-insert-where-query поможет. – starplateena

+1

вместо запроса вставки вы используете запрос на обновление, где условие – Saty

ответ

2

Если вы хотите, чтобы обновить существующую строку, то это:

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

Вы не используете заявление INSERT правильно, если вы используете пункт VALUES, вы не можете применить к нему условие WHERE.

Вот тот же запрос с соответствующим синтаксисом:

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

Надеется, что это поможет.