1

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

    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)
4

2 回答 2

7

Easy :

select frid, relfrid from frrelmst where  frid < relfrid
于 2012-10-05T15:18:50.787 回答
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
  )
于 2012-10-05T15:54:55.090 回答