4

同じスキーマを持つテーブルを持つデータベースのグループがあります。だから、私はUNIONこのテーブルですべてのデータベースからのレコードを表示することを行っています。これはうまく機能します。

しかし、特定のレコードを変更する必要があるため、どの行がどのデータベース/テーブルに属しているかを検出する必要があります。の取得でこのリンクを見つけましUNIONたが、行 <-> テーブルの関係を決定するロジックが見つかりません。

4

5 に答える 5

7

あなたのケースで何が許可されているのかよくわかりませんが、私の提案は、数字を含む追加のフィールドを持つことです:

select field1, field2, 1 as db from db1.tb
UNION
select field1, field2, 2 as db from db2.tb1
UNION
select field1, field2, 3 as db from db1.tb4
UNION

上記のフィールドを使用すると、各レコードのソースを識別できます。

于 2012-04-10T13:34:15.407 に答える
3

これを試して:

(SELECT *, 'db1' as DB_NAME from db1..table1)
union
(SELECT *, 'db2' as DB_NAME from db2..table1)
union
(SELECT *, 'db3' as DB_NAME from db3..table1)
...
于 2012-04-10T13:27:59.083 に答える
1

クエリにデータベース名の列を追加するだけです

(SELECT *,'db1' as db from db1..us_music where `genre` = 'punk')
UNION
(SELECT *,'db2' as db from db2..us_music where `genre` = 'punk')
于 2012-04-10T13:28:19.347 に答える
0

DATABASE()関数を試してください

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_database

于 2012-04-10T13:26:30.663 に答える