2012-06-26 34 views
3

什麼是一個表格,列出不同的元組方式的不同,從GOLDMAN SACHS原來的問題說,列出10種方式中的一種這樣的方式是使用DISTINCT。任何人都可以幫助我更多..名單不同的元組(10種)

+0

聽起來像功課嗎? –

回答

8

這裏有四個。

GROUP BY <all_columns>

SELECT * FROM T INTERSECT SELECT * FROM T

SELECT * FROM T UNION SELECT * FROM T

SELECT * FROM T EXCEPT SELECT * FROM T WHERE 1 = 0

+0

'選擇不同的...'是明顯的一個:) –

+0

@juergend - 是的。雖然這個問題給出了! –

+1

聯盟一個非常漂亮。 –

1

這裏是另一個(ANSI SQL)

select * 
from (
    select t.*, 
      row_number() over (partition by <all_columns>) as rn 
    from t 
) t 
where rn = 1 
0

1使用計數和GROUP BY:

select f1,f2,count(*) from sample_table 
group by f1,f2 
having count(*) = 1; 

2使用公共表表達式:

;WITH CTE (Col1,Col2,Col3,DuplicateCount) 
AS 
(
SELECT Col1,Col2,Col3, 
ROW_NUMBER() OVER(PARTITION BY Col1,Col2,Col3 ORDER BY Col1) AS DuplicateCount 
FROM MyTable) 
Select * from CTE Where DuplicateCount=1 
1
Set @row:=0; 
select colname from (select colname,@row:[email protected]+1 as Row from tablename group by colname) as abc where Row>0; 

這是通過給行名的條目的另一方法。

相關問題