2012-10-31 15 views
-2

我的SQL表是這樣的:查找排

id, name, value1, value2, value3, value4 
1, xyz, 1, 2, 4, 1 
2, xyz, 4, 2, 4, 1 
3, abc, 4, 2, 4, 1 
4, abc, 4, 2, 2, 1 
5, abc, 4, 2, 2, 1 

我想要寫一個函數返回一個擁有他們的價值觀的任何行(SQL查詢閱讀:值1,值2,值3,值4)已更改。所以輸出的結果將是:

id, name, value1, value2, value3, value4 
1, xyz, 1, 2, 4, 1 
2, xyz, 4, 2, 4, 1 
4, abc, 4, 2, 2, 1 

我明白,如果我只需要在輸出值我可以用不同的或集團通過這樣的:

select distinct value1,value2,value3,value4 from table; 

但是,在這裏我需要標識和名稱的列輸出也是如此。

想知道是否真的需要編寫子查詢或創建虛擬/內部表來獲得我的結果。或者,有一個更聰明的方法?

我的問題與How to find out whether a table has some unique columns不相似。讓我知道,如果你認爲否則,我可以澄清。

+0

什麼是 「改」 對你意味着什麼? –

+1

意思是不同的 – Watt

+0

有什麼不同? –

回答

3

試試這個

SQL FIDDLE EXAMPLE

select * 
from table 
where id in (select min(id) from temp group by value1,value2,value3,value4) 
+0

感謝您的回答! 這是我所需要的,簡短而簡單。 – Watt

2

嗯,你更新的問題,我相信你能做到這一點是這樣的:

;WITH CTE AS 
(
    SELECT *, 
      RN = ROW_NUMBER() OVER(PARTITION BY value1, value2, value3, value4 ORDER BY ID) 
    FROM YourTable 
) 
SELECT id, name, value1, value2, value3, value4 
FROM CTE 
WHERE RN = 1; 
+0

感謝您的回答! – Watt