DIFFERENCE行関数は、同じデータ型の2つのセットを取得して、2番目のセットには存在しない、最初のセットのすべての要素を含む1つのセットを返します。
DIFFERENCE(<set1>, <set2>)ここで、
DIFFERENCE({ 1, 2, 3, 4, 5 }, { 1, 3, 5 }) = { 2, 4 } DIFFERENCE({ }, { 1, 3, 5 }) = { } DIFFERENCE({ 1, 2, 3 }, { }) = { 1, 2, 3 } DIFFERENCE({ 1, 2 }, { 'a', 'b' }) yields a checking error because the two sets are not of the same data type
Record 5: Body=Earthy, Silky, Tannins Flavors=Blackberry, Earthy, Toast Record 6: Body=Robust Flavors=Berry, Plum, Zesty Record 7: Body=Silky, Tannins Flavors=Cherry, Pepper, Prune Record 8: Body=Oak, Robust Flavors=Cherry, Oak, Raspberry Record 9: Body=Fruit, Strawberry, Silky, Tannins Flavors=Fruit, Earthy, Strawberry
RETURN results AS SELECT WineID AS idRec, DIFFERENCE(Body, Flavors) AS diffAttrs FROM WineState WHERE WineID BETWEEN 5 AND 9 ORDER BY idRec
diffAttrs idRec ---------------------------- | { Silky, Tannins } | 5 | | { Robust } | 6 | | { Silky, Tannins } | 7 | | { Robust } | 8 | | { Silky, Tannins } | 9 | ----------------------------
レコード5、7および9はBodyセット内に"Silky"と"Tannins"がありますが、これらの値はFlavorsセット内には存在しません。同様に、レコード6および8はBodyセット内に"Robust"がありますが、この値はFlavorsセット内には存在しません。
RETURN results AS SELECT WineID AS idRec, DIFFERENCE(Flavors, Body) AS diffAttrs FROM WineState WHERE WineID BETWEEN 5 AND 9 ORDER BY idRec
diffAttrs idRec ----------------------------------- | { Blackberry, Toast } | 5 | | { Berry, Plum, Zesty } | 6 | | { Cherry, Pepper, Prune } | 7 | | { Cherry, Raspberry } | 8 | | { Earthy } | 9 | -----------------------------------
出力の例としてレコード9を見てみると、"Earthy"は最初のセット(Flavorsセット)の唯一の要素ですが、これは2番目のセット(Bodyセット)には存在しません。