У меня есть этот запрос, который должен вставить сумму, если сумма равная или выше для того же идентификатора еще не существует в таблице.
Я пробовал это под MySQL 5.1 и MSSQL 2k5:
MySQL
INSERT IGNORE INTO test (id, количество)
ВЫБЕРИТЕ 6, 50 ОТ теста
ГДЕ НЕ СУЩЕСТВУЕТ (ВЫБЕРИТЕ 1 ИЗ ТЕСТА, ГДЕ сумма> = 50 И id = 6) ПРЕДЕЛ 1
MSSQL
INSERT INTO test (id, сумма)
ВЫБЕРИТЕ 6, 50 ОТ теста
ГДЕ НЕ СУЩЕСТВУЕТ (ВЫБЕРИТЕ ТОП 1 1 ИЗ ТЕСТА ГДЕ сумма> = 50 И id = 6)
Этот запрос работает нормально, если в таблице уже есть хотя бы одна запись. Если таблица пуста, она никогда не будет работать. Такое же поведение в MySQL (5.1) и MSSQL (2005).
Я не понимаю почему. У кого-нибудь есть объяснение и способ исправить этот запрос для работы, даже если таблица полностью пуста?
РЕДАКТИРОВАТЬ: Мне это нужно в основном для MySQL ...
ОБНОВЛЕНИЕ: Я начал новый вопрос специально для MySQL:
MySQL Проблема с вставкой строки с определенными условиями