如何在MySQL中匹配不同表中的部分行?

时间:2013-06-09 08:00:16

标签: mysql match tld

我有一个名为'urls'的表格,其中包含不同国家/地区的域名,如下所示:

Domain
Paypal.com
wellsfargo.co.uk
sparkasse.fe.de

等...

我还有一个名为'country'的表格,其中包含tld及其相关联的国家/地区,如下所示:

tld        country
nl          netherlands
de          germany
uk          united kingdom
etc...

我不知道如何创建一个匹配项,我可以从表'urls'中的域中提取表'country'中的国家/地区名称。任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:0)

使用以下JOIN条件加入两个表:

ON ( country.tld = RIGHT(urls.domain, CHAR_LENGTH(tld)) )

请注意,如果存在此类索引,则此查询无法使用urls.domain上的索引。我会在插入单独的列(urls.domain)中预先计算urls的顶级域名。在此新列上设置索引,并在JOIN条件中使用此列。