無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

7.4. 問い合わせの結合

2つの問い合わせの結果は、和、積、差の集合演算を使って結合することができます。 構文は以下の通りです。



query1

 UNION [
ALL
] 

query2




query1

 INTERSECT [
ALL
] 

query2




query1

 EXCEPT [
ALL
] 

query2

query1 query2 は、これまで説明した機能をすべて使用することができる問い合わせです。 集合演算は入れ子にしたり、繋げたりすることができます。 例えば、以下の文を見てみましょう。



query1

 UNION 

query2

 UNION 

query3

上記の文は以下のように実行されます。

(

query1

 UNION 

query2

) UNION 

query3

UNION は、 query2 の結果を query1 の結果に付加します(しかし、実際に行が返された順序である保証はありません)。 さらに、 UNION ALL を指定しないと、 DISTINCT と同様に、結果から重複している行を削除します。

INTERSECT は、 query1 の結果と query2 の結果の両方に含まれているすべての行を返します。 INTERSECT ALL を使用しないと、重複している行は削除されます。

EXCEPT は、 query1 の結果には含まれているけれども、 query2 の結果には含まれていないすべての行を返します。 (これが2つの問い合わせの であると言われることがあります。) この場合も、 EXCEPT ALL を使用しないと、重複している行は削除されます。

2つの問い合わせの和、積、差を算出するために、そこの2つの問い合わせは "和演算互換" でなければいけません。 つまり、その問い合わせが同じ数の列を返し、対応する列は互換性のあるデータ型( 項10.5 を参照)でなければなりません。


powered by SEO.CUG.NET