1

以下は、私のテーブルの簡略版です。

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

リレーションシップの表現を 1 つだけ (2 つのレコードの各セットの 1 つだけ) 取得したいと考えています。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

簡単 :

select frid, relfrid from frrelmst where  frid < relfrid
于 2012-10-05T15:18:50.787 に答える
0

以下のSQLを使用します。テーブルにリレーションシップの表現が 1 つしか存在しない場合でも、それは返されます。

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 に答える