2014-09-30 97 views
0

我有一個SQL查詢(使用PostgreSQL),看起來像下面...SQL - 返回從多個列不同的結果,無論訂單

select 
    distinct 
    t1.employee_name c1, 
    t2.employee_name c2, 
    t3.employee_name c3 
from 
    table t1, 
    table t2, 
    table t3 

返回從「表」所有可能的組合(是的,這是一個單一的表格)。我遇到的問題是「A,B,C」和「A,C,B」的結果集。

我需要結果是唯一的,因爲它們出現的順序不同。所以「B,C,A」也應該被過濾等等,所以返回的唯一行具有唯一的值組合,而不考慮它們的順序。

有沒有辦法在SQL中做到這一點?我可能會在未來添加更多列,所以可以支持更多的內容將是理想的。

回答

1

你可以命令你的三個的Fileds,加入這個

where t1.employee_name < t2.employee_name and t2.employee_name < t3.employee_name 

使用< =如果你希望允許重複的名字。

+0

這比我發現涉及多個子查詢的其他解決方案要簡單得多。這似乎是一個很好的解決方案,讓我先檢查一下,然後再檢查它。 – 2014-09-30 18:02:47

+0

它應該過濾出三個名稱不是按升序排列的行。 – 1010 2014-09-30 18:07:36