同じスキーマを持つテーブルを持つデータベースのグループがあります。だから、私はUNION
このテーブルですべてのデータベースからのレコードを表示することを行っています。これはうまく機能します。
しかし、特定のレコードを変更する必要があるため、どの行がどのデータベース/テーブルに属しているかを検出する必要があります。の取得でこのリンクを見つけましUNION
たが、行 <-> テーブルの関係を決定するロジックが見つかりません。
あなたのケースで何が許可されているのかよくわかりませんが、私の提案は、数字を含む追加のフィールドを持つことです:
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
上記のフィールドを使用すると、各レコードのソースを識別できます。
これを試して:
(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)
...
クエリにデータベース名の列を追加するだけです
(SELECT *,'db1' as db from db1..us_music where `genre` = 'punk')
UNION
(SELECT *,'db2' as db from db2..us_music where `genre` = 'punk')
DATABASE()関数を試してください
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_database