Если вы хотите вставить значение, если оно не существует, то что-то вроде следующего будет наиболее подходящим (хотя могут применяться другие диалекты SQL):
INSERT INTO Table(Column)
SELECT 'New Value' WHERE NOT EXISTS (SELECT * FROM Table where Column = 'New Value')
И затем проверка, были ли затронуты строки 0 или 1.
Обратите внимание, где я говорю, что наиболее уместно, я не делаю оценку производительности. Я говорю о коде, который наиболее четко выражает намерение . Обычно это будет достаточно хорошо. Лишь в редких случаях вы должны отойти от кода, который наиболее четко выражает ваши намерения, на что-то менее ясное, которое работает на 0,5% лучше ...
Вам также следует остерегаться вашего первого формата (SELECT * FROM TABLE...
), как общего стиля. Если вы запрашиваете большую, широкую таблицу, выполнение такого выбора может привести к тому, что база данных выполнит большой объем операций ввода-вывода, чтобы получить все значения столбцов, просто чтобы ваш код затем игнорировал все эти значения. SELECT *...
в предложении EXISTS, с другой стороны, специально обрабатывается большинством механизмов баз данных и не будет извлекать фактические данные строки / столбца.