0

私は 8 つのデータベースを持っています: order0,order2... order7,
それらはすべてテーブル 'orders' を持っています.
ここで、8 つのデータベースすべてで「select * from orders where order_id = 652454122」のような exec sql が必要です。
次のようにSQLを書く必要があります:

use order0
select * from orders where order_id = 652454122
use order1
select * from orders where order_id = 652454122
...
use order7
select * from orders where order_id = 652454122

7回コピーする必要があります、それはひどいです!
次のような簡単な方法はありますか?

use order0/order1/order2... 
select * from orders where order_id = 652454122
4

2 に答える 2

2

次のように、8 つのテーブルすべてを結合するビューを作成します。

CREATE VIEW vw_orders
AS
   SELECT *, 0 as DB FROM Order0..Orders
   UNION ALL
   SELECT *, 1 as DB FROM Order1..Orders
   UNION ALL
   ...
   SELECT *, 7 as DB FROM Order7..Orders

そして、そこから選択するだけです:

SELECT * FROM vw_orders WHERE order_id = 652454122
于 2013-10-08T09:30:43.397 に答える
0

次のクエリを使用して、8 つの必須クエリを生成します。

select CONCAT(" select * from ",table_schema,".orders 
where order_id = 652454122;") from information_schema.tables 
where table_schema like 'order%' and table_name='orders'

8 つのクエリを個別に記述する必要はありませんでした。上記のクエリを使用すると、結果は、記述する必要がある 8 つのクエリになります。

于 2013-10-08T10:38:13.563 に答える