2014-11-06 67 views
-1

我正在瀏覽一個大型表中的列,我想知道該列是否有多個不同的值。我不在乎值是什麼或有多少不同的值,如果我們有多個不同的值(即對於該列具有不同值的兩行),則只需返回true,否則返回false。性能是我最關心的問題。在SQL中實現這個最好的方法是什麼?SQL - 查找某個列是否有多個不同的值

編輯:表具有MSSQL上的1M +行。這些列有多種數據類型;有些可以爲空,有些則不可以。

+1

什麼是你的大桌子? 1000萬條記錄?更多?減?你使用什麼服務器?甲骨文? MySQL的? MSSQL?你有沒有榜樣?你比較哪些數據類型?很多未解答的問題在您身邊... – 2014-11-06 23:59:38

+0

在您要檢查的列上創建唯一索引,查看這些索引是否無法創建。 – 2014-11-07 02:41:41

回答

2

我想我完全是最初誤解了這個問題。你想知道這些數值是不是都是相同(使用「distinct」這個詞讓我感到很失望)。

如果你想知道的是,你可以這樣做:

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開始尋找另一個值,應該停在遇到的第一個值。通常情況下,我會建議在性能列上加一個索引。

相關問題