組合でのMySQL接続

選択する ...
UNION [ALL | DISTINCT]
選択する ...
[UNION [ALL | DISTINCT]
選択する ...]

単一の結果セットへのSELECT文の数からの結果のためのUNION。

各SELECT文の対応する位置に記載されている列が同じ型を持つ必要があります選択されています。(例えば、選択された最初の列の最初の文は、同じタイプと最初の列が選択されている他の文章を持つ必要があります。)列名も、結果の列名に使用される最初のSELECT文で使用されています。

SELECTステートメントは通常の選択ステートメントですが、以下で定義されます。

・自分のみ最後のSELECT文では、INTO OUTFILEを使用することができます。

・HIGH_PRIORITYは、UNION SELECT文の一部として使用することはできません。あなたが最初のSELECTのHIGH_PRIORITYを指定した場合、それは動作しません。あなたがHIGH_PRIORITY他の後続のSELECT文を指定すると、構文エラーが生成されます。

あなたはUNIONのキーワードALLを使用しない場合は、DISTINCTを使用して結果のセット全体を持っているように、すべての返される行は、ユニークです。あなたはALLを指定した場合は、すべての使用SELECTステートメントからすべての一致する行を取得します。

DISTINCTキーワードはオプションの単語である、任意の効果を持っている余裕はありませんが、SQL標準の要件に応じて、構文が使用できます。(でMySQLの、デフォルトの一般的なプロパティの代わりにDISTINCT移動体。)

あなたは、同じクエリでDISTINCT UNION ALLとUNIONを混在させることができます。治療するようなAの方法で混合するUNIONタイプ、すなわち共通ボディは、その左側に配置されているすべてのALL DISTICT組合を覆うように。DISTINCT組合は、暗黙的に生成されたUNIONはDISTINCT、またはUNION(DISTINCTまたはALLキーワードが続いていない)を生成するために特に使用することができます。

あなたはソートにORDER BYまたはLIMIT句を使用するか、全体UNIONの結果を制限したい場合は、括弧を追加し、最後の1の後にORDER BYやLIMITを置くために、単一のSELECT文を持っている必要があります。次の例では、これらの2つの句の両方を使用しています。

(FROM SELECT tbl_nameを = 10、B = 1)
連合
(FROM SELECT tbl_nameを = 11、B = 2)
LIMIT 10 BY ORDER。

-一貫性のフィールドを確保するために取ら
SELECT s.sc_id ID、名前s.score からSC S)を 連合SELECT t.c_id ID、名前t.`name` からコースT)を ORDER BY ID制限10

 

このテーブルは、ORDER BYの名前を含む(すなわち、使用して使用することができないtbl_nameをするCOL_NAME名形式)カラム参照を。これは、列の別名の最初のSELECT文で提供され、ORDER BYでエイリアスを参照するかで見列ORDER BYで列の位置を使用することができます。(別名の好ましい使用、彼らは列の位置を使用することをお勧めしませんので。)

エイリアスとの分類がある場合に加えて、ORDER BY句は、エイリアスではなく、列名の参考文献を参照する必要があります。次の文は、最初の文は実行されている必要がありますが、第二は不明列の「順序句」「」エラーで表示され、失敗します。

UNION(SELECT ...)BでORDERを(TからAS bを選択)。
BY UNION(SELECT ...)ORDERを(TからAS bを選択)。

個々のSELECTにORDER BYまたはLIMITを適用するには、SELECTを囲む括弧の内部句を配置:単一SELECT ORDER BYまたはLIMITを使用するために、括弧の句内に配置されるべきです。括弧はSELECTが含まれています。

(FROM SELECT tbl_nameを WHERE LIMIT 10 BY = 10、B = 1 ORDER)
連合
(FROM SELECT tbl_nameを WHERE LIMIT 10 BY = 11、B = 2 ORDER)。

関数に、LIMITと組み合わせて、単一のSELECT文の括弧BY ORDER。それ以外の場合は、ORDER BYを削除最適化されています。

結果セットの値の列のUNIONタイプおよび長さは、すべてのSELECT文を考慮して復元されます。たとえば、次の文を考えてみます。

MySQLの> SELECT REPEAT( ''、1)UNIONのSELECT REPEAT( 'B'、10);
+ --------------- +
| REPEAT( ''、1)|
+ --------------- +
| |
| bbbbbbbbbb |
+ --------------- +

(MySQLの部分の以前のバージョンでは、2行目は1の長さに切り捨てられました)

おすすめ

転載: www.cnblogs.com/fdy-study-consist/p/12113563.html