MySQL запрос не работает - PullRequest
2 голосов
/ 29 декабря 2011

я хочу задать запрос, если строка не существует

IF NOT EXISTS (SELECT id FROM table WHERE id=1)
INSERT INTO table (id, name) VALUES (1,'abx');

и что если id! = 1, то значения вставляются и проверьте, существует ли уже строка

если есть решение?

спасибо заранее ...

наконец-то я справился

INSERT INTO таблица (id, name) ЗНАЧЕНИЯ (1, 'abx') ON DUPLICATE KEY UPDATE id = 1;

спасибо за поддержку

Ответы [ 4 ]

1 голос
/ 29 декабря 2011
INSERT IGNORE INTO `table_name` (`id`, `name`)
VALUES (1, 'abx');
1 голос
/ 29 декабря 2011

MySQL не имеет "ЕСЛИ НЕ СУЩЕСТВУЕТ".

Для получения дополнительной информации: Как вставить, если не существует в MySQL?

Вы увидите, что есть обходные пути, но использование синтаксиса MsSQL не будет работать.

Использование IGNORE должно помочь: INSERT IGNORE INTO

В качестве альтернативы, просто дайте ему потерпеть неудачу.

1 голос
/ 29 декабря 2011

У вас проблема с типами данных - в SELECT идентификатор сравнивается с числом (id = 1 - без апострофов), а в INSERT идентификатор записывается в виде строки (в апострофах: '1').

0 голосов
/ 29 декабря 2011

Я думаю, что:

INSERT IGNORE INTO table (id, name) VALUES (1,'abx');

делает то, что вы хотите. Он тихо потерпит неудачу, если INSERT окажется неудачным.

Обратите внимание, что ключ не нуждается в кавычках, это целое число, а не строка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...