需要SQL帮助

时间:2012-10-05 15:17:07

标签: sql sql-server subquery except

以下是我的表格的简化版本。

    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)

2 个答案:

答案 0 :(得分:7)

简单:

select frid, relfrid from frrelmst where  frid < relfrid

答案 1 :(得分: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
  )