Если я хочу, чтобы найти записи, где данное поле равно некоторое значение, я используюРазница в стоимости между «WHERE A = x» и «WHERE A IN (x)»?
SELECT * from TableName WHERE FieldName=value;
Если я хочу, чтобы выбрать записи, которые соответствуют списку значений, можно использовать
SELECT * from TableName WHERE FieldName IN (value1, value2, ..., valueN);
, чтобы избежать (отредактированный, так как, казалось бы, это заблуждение о цели вопроса)WHERE FieldName = value1 OR FieldName = value2 OR...
Использование .eqp on
, по-видимому, предполагает, что когда мой список содержит только один элемент, два запроса эквивалентны.
Это правда?
Если да, могу ли я свободно использовать WHERE FieldName IN (...)
и проанализировать значения в список с разделителями-запятыми (исключая конечные запятые и т. Д.) Без затрат на запрос?
Казалось бы, это значительно упростит кодирование моих запросов, но я удивлен тем, что у оператора нет дополнительной сложности, независимо от того, что список является только одним элементом.
Редактировать: Чтобы было ясно, я не буду использовать OR
в любом случае - если у меня есть одно значение, то ранее я использовал первую форму (FieldName=value
). Если у меня было несколько значений, я использовал IN (val1, val2, ...)
. Основываясь на комментариях, кажется, что я могу удалить код, который мне нужно использовать для их обработки, и вместо этого искать только для IN (value1)
.
Возможный дубликат [IN vs OR в предложении SQL WHERE] (http://stackoverflow.com/questions/3074713/in-vs-or-in-the-sql-where-clause) –
Информация, указанная в ответах, полезна, но вопрос другой. – chrisb2244
Нет, я не согласен, это тот же вопрос. –