これは面接の質問であるため、彼らは両方とも、これらの機能のご理解をテストしています。
答えが期待しているのは、「一般的に、異なるアクションを実行するときにこれを行うことはできません」ということです。これは、結果セットの最後に行が追加されるjoinはさらに列を追加します。
SELECT ISNULL(A.AA, '') AS AA, ISNULL(B.BB, '') AS BB FROM A
FULL OUTER JOIN B ON 1=0
以上に:
SELECT A.AA, '' AS BB FROM A
UNION ALL
SELECT '' AS AA, B.BB FROM B
は同じです:行が二つのソースの一つからのデータを含む場合
あなたが参加していことができる唯一の方法と連合の作品です型が一致して1列のみでこれを行う:
:
SELECT A.AA AS TT FROM A
UNION ALL
SELECT B.BB AS TT FROM B
することと同じですあなたは、データが複数のテーブルの上に生み出されていますが、あなたが一緒にTIのすべてを見たい場合は、あなたがこれを行うだろう
SELECT ISNULL(A.AA, B.AA) AS TT
FROM A
FULL OUTER JOIN B ON 1=0
一つの場合は、しかし、私はこのケースではなく、FULL OUTERでUNIONを使用するように助言するのためのJOIN、ありますクエリは、あなたが他の方法で期待していたことをやっています。
EXISTSとSub selectを使って内部結合をシミュレートすることはできますが、UNION単独ではそうは思いません。 – Magnus