2012-10-05 358 views
1

下面是我的表格的簡化版本。SQL幫助需要

FRID, RELFRID, Relationship 
    123, 456, Husband/Wife 
    456, 123, Wife/Husband 
    345, 765, Brother/Sister 
    765, 345, Sister/Brother 

我想只拉一個表示關係(只是兩個記錄的每個集合中的一個)。我已經嘗試了很多東西,包括EXCEPT和SUBSELECTS,我試過的所有東西都沒有結果,因爲左邊的每個數字也都表示在右邊。任何想法如何獲得我正在尋找的結果?我已經嘗試了以下查詢的每個組合。

select frid, relfrid from frrelmst 
    except 
    select frid, relfrid from frrelmst 
    where frid in (select relfrid from frrelmst) 
    order by frid, relfrid 

    Select frid, relfrid from frrelmst where 
    relfrid+frid not in (select frid+relfrid from frrelmst) 

回答

7

簡單:

select frid, relfrid from frrelmst where frid < relfrid 
+1

我喜歡這個。 。 。聰明。 –

+0

輝煌!謝謝! – user1475911

+0

好,但如果記錄'123,456,丈夫/妻子'不存在會發生什麼?或者是否會一直存在兩種關係的表徵? – acatt

0

我會用下面的SQL。如果表中只存在關係的一個表示,它仍然會被返回。

SELECT frid, relfrid, relationship 
FROM frrelmst f 
WHERE frid < relfrid 
    OR NOT EXISTS (
    SELECT 1 
    FROM frrelmst 
    WHERE frid = f.relfrid 
     AND relfrid = f.frid 
     AND frid <= f.frid 
)