MySQL:匹配2个表中具有多个值的记录

时间:2014-12-11 23:01:01

标签: mysql mysql-workbench

我有两张桌子:

表1

id | title     | author       | url
1  | the-test  | james-brown  | www.thetest.com
2  | the-house | clancy-brown | www.thehouse.com
3  | the-desk  | leanne-brown | www.thedesk.com
4  | the-head  | julie-brown  | www.thehead.com

表2

id | title     | author       | url**
1  | the-mouse | john-blue    | www.themouse.com
2  | the-house | clancy-brown | www.thehouse.com
3  | the-cups  | carrie-blue  | www.thecups.com
4  | the-head  | clancy-brown | www.thehead.com

我需要仅显示 titleauthor匹配的结果,即

2  | the-house | clancy-brown | www.thehouse.com

我试过这个:

select *
from table1
inner join table2 on (table1.title=table2.title) AND (table1.author=table2.author)

但它只是永远运行(实际表中实际上有几十万行)。

请注意,这很好用:

select *
from table1
inner join table2 on (table1.title=table2.title)

我无法让它与两张桌子相匹配。有更聪明的方法吗?

提前感谢您的所有帮助。

1 个答案:

答案 0 :(得分:1)

我认为你的SQL很好,你只需要在作者上索引table1和table2。添加这些索引,JOIN将足够快。您还有一个问题,即在示例数据中调用列author,在第一个查询中调用name