2010-12-12 79 views
0

我有兩個表:加入兩個表具有一個共同的關鍵在MySQL

表1

id app_name app_id 
1 name1 12001 
2 name2 12002 
3 name2 12002 
3 name3 12003 

其次

表2

id app_id 
1 22001 
2 22002 
3 12003 
4 22002 

我如何可以顯示數據從這張表app_id的相同?

在這個例子中正確的SQL應顯示

name3 12003 

我已經嘗試過所有類型的加盟,也select * from table1, table2 where table1.app_id=table2.app_id,但似乎我失去了一些東西簡單。


正確答案

不可打印,經過數據庫插入剪貼板複製數據出現符號導致了這個問題。兩個表中的列值不相同。可以通過手動或十六進制編輯器進行SQL轉儲和檢查來檢查。

+1

你表示你沒有看到你想要的。發生了什麼呢? – 2010-12-12 14:33:46

+1

你的查詢適合我。你的劇本顯示什麼? – 2010-12-12 14:39:47

回答

3
SELECT Table1.app_name, Table1.app_id 
FROM Table1 
INNER JOIN Table2 ON Table1.app_id = Table2.app_id 
+0

+1,因爲這是問題被問到的正確答案,但是如果你注意到他實際上已經試過了。問題可能出在他的桌子結構上。 – 2010-12-12 14:34:20

+0

@Mark Byers:同意。我也注意到了;這就是爲什麼我要求澄清。 – 2010-12-12 14:36:07

+0

還是看空效果,之前就已經試過了。可能是,這是其他地區的某種錯誤,數據庫錯誤,不是類似的ID,但現在找不到它。 – 2010-12-12 14:37:29

0

正規內加入應該足夠了:

select t1.app_name, t1.app_id from table1 t1 inner join table2 t2 on t1.app_id = t2.app_Id 
1

你貼應該工作(雖然我會強烈建議您使用JOIN關鍵字,而不是逗號語法)查詢。

我懷疑你的問題是你的表沒有被正確創建。使用下面的命令來調試問題 - 並特別注意數據類型:

SHOW CREATE TABLE table1; 
SHOW CREATE TABLE table2; 

您還可能要檢查該行你在結果集真的希望這兩個表中確實存在:

SELECT * FROM table1 WHERE app_id = '12003'; 
SELECT * FROM table2 WHERE app_id = '12003'; 
相關問題