0

私は 5 つのデータベースを持っています。A B C D E

すべてのデータベースは同じテーブル/構造/フィールドを持っています

テーブルを使用して5つのデータベースから結果を取得したいのですがSMSOutgoing、フィールドはuid

次のようになります。

SELECT * OR JOIN 5 database A B C D E F
FROM `table` SMSOutgoing
WHERE uid = 1

すべてのデータベースに uid=1 があるわけではありません。どのデータベースに結果があるかを表示する必要があります

私は SMS Gateway を実行しています。各電話 / 1 つの番号で 1 つのデータベースを使用しているため、非常に多くの異なるデータベースが存在します。

私はそれを解決するために何時間も費やしましたが、常にエラーです.間違ったガイドに従っていると思います(1つのデータベースで複数のテーブルを結合する)

道に迷っています。助けてください。ありがとうございます

4

1 に答える 1

1

SMSOutgoing テーブルに uid = 1 を含むデータベースを一覧表示したいようです。もしそうなら、あなたは使用できるはずですUNION

SELECT DISTINCT 'DatabaseA' WhichDb
FROM DatabaseA.SMSOutgoing 
WHERE uid = 1
UNION
SELECT DISTINCT 'DatabaseB' WhichDb
FROM DatabaseB.SMSOutgoing 
WHERE uid = 1
UNION
...
UNION
SELECT DISTINCT 'DatabaseF' WhichDb
FROM DatabaseF.SMSOutgoing 
WHERE uid = 1

DISTINCT同じテーブルに複数の uid を持つことができる場合 に使用しましたが、これは不要かもしれません。

編集:あなたのコメントから、結果が欲しいだけのように聞こえます:

SELECT *
FROM DatabaseA.SMSOutgoing 
WHERE uid = 1
UNION
SELECT *
FROM DatabaseB.SMSOutgoing 
WHERE uid = 1
UNION
...
UNION
SELECT *
FROM DatabaseF.SMSOutgoing 
WHERE uid = 1

重複している可能性がある場合は、使用する必要があるUNION ALLかもしれません...

于 2013-03-29T18:42:22.137 に答える