Задавайте вопросы, мы ответим
Вы не зашли.
Приветствую, коллеги!
На фоне имеющихся insert ignore и insert on update мой вопрос может показаться странным, но для дела надо .
Собственно, у меня конечная цель - сделать инсерт, который вставляет в таблицу запись, если выполняются какие-то условия на другой (других) таблицах (присутствует или отсутствует какой-то набор строк). Привожу более упрощенный пример, вполне себе работающий в слоновьей среде.
create table t(id int primary key);
Вставляем сотню, если ее еще нету в таблице.
insert into t select 100 where not exists (select 1 from t where id = 100 );
Получаю
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 not exists (select 1 from t where id = 100 )' at line 1
У кого есть идеи, как можно подобного рода конструкцию реализовать - поделитесь плиз.
Неактивен
А чем не подходит стандартная конструкция INSERT IGNORE ?
Отредактированно evgeny (19.05.2013 12:55:59)
Неактивен
evgeny написал:
А чем не подходит стандартная конструкция INSERT IGNORE ?
INSERT IGNORE INTO t(id) SELECT id FROM t WHERE id = 100
Тем и не подходит, что не везде она есть, та конструкция, это же я упрощенный вариант привел, реально сложнее ситуация, там реально в другую таблицу лазаю, чтобы проверить то условие, от которого зависит вставка.
evgeny написал:
Хотя так наверно будет по оптимальней
INSERT INTO t(id) SELECT 100 'id' FROM DUAL WHERE IF((SELECT id FROM t WHERE id = 100),0,1);
Спасибо! То, что надо, по ходу.
Неактивен