在MySQL中使用一个公共密钥加入两个表

时间:2010-12-12 14:30:12

标签: sql 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

我已经尝试了所有类型的JOIN以及select * from table1, table2 where table1.app_id=table2.app_id,但似乎我错过了一些简单的事情。


正确答案

剪贴板复制数据以进行数据库插入后出现的不可打印符号导致此问题。两个表中的列值不相同。可以通过手动或使用十六进制编辑器进行SQL转储和检查来检查它。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

您发布的查询应该有效(尽管我强烈建议您使用JOIN关键字而不是逗号语法)。

我怀疑您的问题是您的表格未正确创建。使用以下命令调试问题 - 并特别注意数据类型:

SHOW CREATE TABLE table1;
SHOW CREATE TABLE table2;

您可能还想检查结果集中预期的行是否确实存在于两个表中:

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

答案 2 :(得分:0)

常规内连接应该足够了:

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