3 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊
是的,它可以在MySQL中使用。
有問類似的問題以前也。您必須使用FEDERATED ENGINE來執(zhí)行此操作。這個(gè)想法是這樣的:
您必須具有基于另一個(gè)遠(yuǎn)程位置的表的聯(lián)合表才能使用您想要的方式。表的結(jié)構(gòu)必須完全相同。
CREATE TABLE federated_table (
id INT(20) NOT NULL AUTO_INCREMENT,
name VARCHAR(32) NOT NULL DEFAULT '',
other INT(20) NOT NULL DEFAULT '0',
PRIMARY KEY (id),
INDEX name (name),
INDEX other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
這是一種破解,它不是一個(gè)連接,但我使用bash函數(shù)讓我覺得我在做跨服務(wù)器查詢:
顯式版本:
tb2lst(){
echo -n "("
tail -n +2 - | paste -sd, | tr -d "\n"
echo ")"
}
id_list=$(mysql -h'db_a.hostname' -ume -p'ass' -e "SELECT id FROM foo;" | tb2lst)
mysql -h'db_b.hostname' -ume -p'ass' -e "SELECT * FROM bar WHERE foo_id IN $id_list"
+--------|-----+
| foo_id | val |
+--------|-----+
| 1 | 3 |
| 2 | 4 |
+--------|-----+
我寫了一些包裝函數(shù),我保存在我的bashrc中,所以我的觀點(diǎn)只是一個(gè)命令:
db_b "SELECT * FROM bar WHERE foo_id IN $(db_a "SELECT id FROM foo;" | tb2lst);"
+--------|-----+
| foo_id | val |
+--------|-----+
| 1 | 3 |
| 2 | 4 |
+--------|-----+
至少對(duì)于我的用例,這將兩個(gè)查詢快速拼接在一起,輸出等同于連接,然后我可以將輸出管道輸出到任何需要它的工具中。
添加回答
舉報(bào)