-1

2 つの異なるソースからの 2 つの別個のデータベースがありますが、データの ttype と行は同じですが、両方のデータを配列に返して、両方を 1 つのソースとして操作できますか?

4

2 に答える 2

2

2 つのデータベースが同じサーバーにあり、両方のテーブルの構造が同じである場合は、UNIONを使用できます。

SELECT *
FROM `database1`.`table1`
WHERE `condition1`
UNION
SELECT *
FROM `database2`.`table2`
WHERE `condition2`

database1、database2、table1、table2、condition1、および condition2 を実際の値に置き換えます。

于 2012-08-13T00:48:04.040 に答える
1

(上記のbiziclopとbfavarettoのコメントへのクレジット-しかし、半分の答えから他の人を救うための答えとして投稿してください。)

概要:フェデレーションテーブル(http://dev.mysql.com/doc/refman/5.0/en/federated-storage-engine.html)とUINION(またはJOIN)を使用します。

詳細:

「プライマリ」(ローカル)MySQLテーブルとセカンダリ「リモート」データベースがあると仮定します。「プライマリ」MySQLバイナリで、「フェデレーションテーブル」用にコンパイルします。これにより、リモートサーバー上のテーブルにローカルであるかのようにアクセスできます。フェデレーションテーブルはデフォルトでは有効になっていません。

次に、リモートデータベースのテーブルとまったく同じ構造でプライマリデータベースにテーブルを作成しますが、テーブルの作成手順の最後に「CONNECTION」文字列を追加します。これにより、フェデレーションテーブルとして設定され、実際にリモートサーバーからデータが取得されます。

次に、プライマリテーブルとフェデレーションテーブルの間のUNION(または必要に応じてJOINS)を使用してプライマリサーバーにクエリを実行すると、プライマリサーバーのみからのものであるかのように1セットの結果が返されます。リモートからもデータを取得します。

マニュアルに複数のクエリの実行方法に関する警告があり、あまり効率的ではないことに注意してください(たとえば、すべての呼び出しの前に「SHOW TABLES」で始まり、必要以上の行を返す、ローカル一時テーブルを作成するなど)。

于 2012-08-13T00:57:47.700 に答える