2012-01-20 43 views
1

表2的條件我想做的事:選擇數據,但需要在MySQL

select column1 
from db1.table1 
where db1.table1.column2 = db2.table2.column1. 

在這種情況下,該錯誤信息是:

未知列:db2.table2.column1

我對數據庫1和2的設置是正確的,只是不知道如何編寫查詢在這種情況下。

+0

只是爲了確保兩張表都在不同的數據庫中? – Vinay

+0

在你選擇的部分添加table2,你需要在調整它們之前選擇表格。也似乎你使用2數據庫? – Moonlight

+0

你打算接受這些答案嗎?或者他們都不爲你工作? – 2012-01-25 13:02:32

回答

2
select t1.column1 
from db1.table1 t1 
join db2.table2 t2 on t1.column2 = t2.column1 

你會發現,這個查詢使用更加現代,並且是優選join table on condition語法

+0

您可能希望限定'column1'到一個表中,因爲這兩個名稱都可能存在。 – Karlson

+0

@卡爾森謝謝。編輯。 – Bohemian

1

您需要在FROM條款中列出db2.table2。假設你想從column1db.table1

select t1.column1 
from db1.table1 t1, db2.table2 t2 
where t1.column2 = t2.column1 

,否則你不能在WHERE子句中使用它們。

如果您更喜歡使用join ... on語法(稱爲顯式連接),然後檢查波希米亞的答案。

相關討論哪些語法挑,看Explicit vs implicit SQL joins

+0

如果您在table1和table2中具有相同的列,則可以使用table1.column1 – Moonlight

+0

true,並添加別名來修復它並使其更具可讀性。 –

0
select column1 
from db1.table1, db2.table2 
where db1.table1.column2 = db2.table2.column1 
0

試試這個:

SELECT 
    db1.col1, 
    db2.col2 
FROM 
    db1.tb1 
LEFT JOIN 
    db2.tb2 ON db2.tb2.col1 = db1.tb1.col2