2014-11-06 2 views
-1

Я просматриваю столбцы в большой таблице, и я хочу узнать, имеет ли столбец более одного отдельного значения. Мне все равно, какие значения или сколько разных значений есть, мне просто нужно вернуть true, если у нас есть более одного значения (т. Е. Две строки с разными значениями для этого столбца) и false в противном случае. Производительность - моя главная забота. Каков наилучший способ реализовать это в SQL?SQL - найти, если столбец имеет более одного отдельного значения

EDIT: таблица содержит 1M + строки на MSSQL. Столбцы имеют несколько типов данных; некоторые из них являются обнуляемыми, а некоторые - нет.

+1

Что такое большой стол для вас? 10 миллионов записей? Больше? Меньше? Какой сервер вы используете? Oracle? MySql? MSSQL? У вас есть пример строки? Какие типы данных вы сравниваете? На оставшейся стороне остались нерешенные вопросы ... –

+0

Создайте уникальный индекс в столбце или столбцах, которые вы хотите проверить, чтобы увидеть, не удалось ли создать этот индекс. –

ответ

2

Я думаю, что полностью изначально неправильно понял вопрос. Вы хотите знать, являются ли значения не все такими же (использование слова «отличная» отбросило меня).

Если вы хотите знать, что вы можете сделать:

select (case when exists (select 1 from table t2 where t2.col <> t.col) 
      then 'true' 
      else 'false' 
     end) 
from (select top 1 col from table t) t; 

Предложение from выбирает произвольное значение. exists начинает искать другое значение и должен остановиться на первом встреченном. Обычно я предлагаю ввести индекс для столбца для производительности.

Смежные вопросы