Название: Вставка строки по условию Отправлено: manarch от Ноябрь 13, 2014, 11:06 Кто может подсказать как вставить строку по "условию". в одном запросе Т.е. если есть строка с заданными значениями то не добавлять.
что то типа SELECT INTRO "table" ("name", "firstname", "date") VALUES("Вася", "Пупкин", 1900.01.01) WHERE "name"<>"Вася" AND "firstname"<>"Пупкин"; если в таблице уже есть Вася Пупкин то строку не вставлять, а если нету - то добавить. Название: Re: Вставка строки по условию Отправлено: Пантер от Ноябрь 13, 2014, 11:10 Какая СУБД? В некоторых есть insert or update.
Название: Re: Вставка строки по условию Отправлено: manarch от Ноябрь 13, 2014, 13:14 Нужно именно добавление новой строки, а не изменение существующей. БД не важно.
Название: Re: Вставка строки по условию Отправлено: Пантер от Ноябрь 13, 2014, 13:17 Если чистый sql, оторванный от СУБД, то никак (на сколько я знаю). Либо 2 запроса, либо затачиваться под конкретную СУБД.
Название: Re: Вставка строки по условию Отправлено: Hellraiser от Ноябрь 13, 2014, 13:21 Если такой возможности нет в СУБД (а на самом деле мало где есть), то там будет далеко не 2 запроса. Опять же, если в СУБД такая фича есть, то будет либо обновление, либо добавление. Только добавление - пишите свою хранимую процедуру и обращайтесь к ней.
Название: Re: Вставка строки по условию Отправлено: RSATom от Ноябрь 13, 2014, 13:39 http://en.wikipedia.org/wiki/Merge_%28SQL%29
ну или гуглим upsert + "название СУБД" Название: Re: Вставка строки по условию Отправлено: Johnik от Ноябрь 13, 2014, 14:26 можно примерно так:
Код: INSERT INTO table_name (c1, c2) проверено на mssql должно так же работать с sqlite и postgresql Название: Re: Вставка строки по условию Отправлено: RSATom от Ноябрь 13, 2014, 14:29 кстати, еще один концептуально правильный вариант - первичные/уникальные ключи - это в случае если дубликаты в принципе недопустимы.
|