簡體   English   中英

在一個MySQL SQL查詢中使用兩個數據庫

[英]Use two database in one mysql sql query

我想在一個SQL查詢中使用2個數據庫。我將在一個數據庫中運行查詢,另一個數據庫應該通過在表中添加數據庫名稱前綴來選擇,但第二個數據庫名稱我想動態選擇。 例如:

SELECT * FROM db1.contact WHERE id 
IN (SELECT contact_id FROM (REPLACE(DATABASE(),1,2)).email);

我該怎么做?

您可以嘗試執行以下操作:

SELECT * FROM db1.contact WHERE id IN (SELECT contact_id FROM db2.email);

對於第二台服務器:

SELECT * FROM db21.contact WHERE id IN (SELECT contact_id FROM db1.email);

但是不能動態選擇數據庫,因為SQL的DATABASE部分不支持任何類型的功能 (例如REPLACE,IF等)

我看到的唯一方法是動態SQL。

SELECT @dbname := 'db2';
SELECT @query := CONCAT('SELECT * FROM db1.contact WHERE id IN ',
                        '(SELECT contact_id FROM ', @dbname, '.email);');

PREPARE stmt FROM @query;
EXECUTE stmt;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM