MYSQL - вставить в и нулевое значение, как избежать?

У меня есть SQL-запрос, он выглядит так:

insert into tableA(order_id, contractnotenumber, shipmentdate, comment) 
    values ((select entity_id from tableb where increment_id = '12345678'), 
    '', '1970-01-01', '');

Теперь, если подзапрос ((select entity_id from tableb, где increment_id = '12345678')) возвращает null, вставка не работает. Мне нужен простой способ сказать, что если подзапрос возвращает null, ничего не делайте. Я пробовал вставить игнорирование, но это вставляет строку с 0 вместо нуля, что работает, но это не то, что я хочу. В SQL Server я использовал если не существует (выберите ...), но это не работает с MYSQL.

Идеи?

Спасибо!


person EOB    schedule 07.05.2012    source источник


Ответы (2)


insert into tableA(order_id, contractnotenumber, shipmentdate, comment)
select entity_id, '', '1970-01-01', '' from tableb where increment_id = '12345678'

Это не будет ничего вставлять, если строка не найдена в tableb

person zerkms    schedule 07.05.2012
comment
Хммм, почему-то запрос выполняется вечно ... не хватает какой-то детали? Однако сам выбор возвращает данные. - person EOB; 07.05.2012
comment
@EOB: в этом запросе INSERT вставляет то, что SELECT выбрано. Если ничего не вернуло - то вставка сразу выходит - person zerkms; 07.05.2012
comment
Да, выход работает, но если что-то существует, он запускается, запускается и запускается, пока я не отменю его, либо пока не истечет время ожидания. - person EOB; 07.05.2012
comment
Ах, моя вина, у меня была другая транзакция, запущенная из моих предыдущих попыток, и она заблокировала новый запрос! Решено! - person EOB; 07.05.2012

Вы также можете попробовать mysql> insert ignore

person Louie Miranda    schedule 07.05.2012
comment
Как я уже сказал, в моем случае это не сработает, он вставит строку с 0 для идентификатора, чего я не хочу. - person EOB; 07.05.2012