Есть таблица table. Три поля: autoincrement, two, three.
Нужно добавить строку со значениями в полях two, three если её нет в этой таблице.
Думал использовать ignore, но там первое поле autoincrement, а в two, three есть повторяющиеся элементы поэтому сделать их PRIMARY или UNIQUE нельзя.
Спустя 2-3 часа попыток, пришел к такому коду:
SELECT IF((SELECT three FROM table WHERE two='100' AND three='1') IS NULL, @res:=1, 0) RES;
INSERT INTO table (two, three) (SELECT '100','1' FROM table WHERE @res=1 LIMIT 1)
Возможны ли варианты более адекватные? Или мой код вполне неплох?
#UPD:
Ещё вариант с использованием переменной
SELECT @res:=autoincrement FROM table WHERE two=46 AND three=24;
INSERT IGNORE INTO table (autoincrement,two, three) VALUES (@res, 46, 24)
Но в предыдущем варианте INSERT выполняется в 2-3 раза быстрей