Сначала создайте уникальный индекс для столбца или столбцов, которые вы не хотите дублировать. Я не могу сказать, если это на обоих или просто field_2
:
create unique index unq_my_table_field_2 on my_table(field_2);
Затем игнорируйте ошибку, используя on duplicate key update
:
INSERT INTO my_table (field_1, field_2)
VALUES (val_1, val_2)
ON DUPLICATE KEY UPDATE field_2 = VALUES(val_2); -- this is a no-op, because the value is already the same
Тот факт, что ваш код не работает с пустой таблицей, не имеет ничего общего с предложением WHERE
, но с использованием from my_table
в предложении from. Если строк нет, запрос возвращается. , , нет строк. Не удивительно, что ничего не вставлено.