加入两个表具有一个共同的关键在MySQL

问题描述:

我有两个表:加入两个表具有一个共同的关键在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

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

正规内加入应该足够了:

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

你贴应该工作(虽然我会强烈建议您使用JOIN关键字,而不是逗号语法)查询。

我怀疑你的问题是你的表没有被正确创建。使用下面的命令来调试问题 - 并特别注意数据类型:

SHOW CREATE TABLE table1; 
SHOW CREATE TABLE table2; 

您还可能要检查该行你在结果集真的希望这两个表中确实存在:

SELECT * FROM table1 WHERE app_id = '12003'; 
SELECT * FROM table2 WHERE app_id = '12003';