MySQL交叉表正则表达式匹配

时间:2010-06-03 08:43:18

标签: mysql regex join

我有一个Web应用程序,我正在研究分析referals的引擎。

现在我有了包含网页浏览量的表格以及看起来像这样的参考:

pv_id        referer
------------------------------------------------------------
5531854534   http://www.google.com/search?ie=UTF-8...
8161876343   http://google.cn/search?search=human+rights
8468434831   http://search.yahoo.com/search;_...

第二个表包含以下来源定义:

source       regex
------------------------------------------------------------
Google       ^https?:\/\/[^\/]*google\.([a-z]{2,4})(\/.*)?$
Yahoo        ^https?:\/\/[^\/]*yahoo\.com(\/.*)?$

我想要的是通过加入这两个创建的第三个表:

pv_id        source
------------------------------------------------------------
5531854534   Google
8161876343   Google
8468434831   Yahoo

如何使用正则表达式连接这些表?

更新:

将正则表达式的最后一部分从(\/.*|)更改为(\/.*)?

2 个答案:

答案 0 :(得分:3)

试试这个:

select t1.pv_id, t2.source
from table1 t1
  inner join table2 t2 on (t1.referer regexp t2.regex)

答案 1 :(得分:1)

MySQL:

SELECT a.pv_id, b.source 
FROM a, b
WHERE a.referer REGEXP b.regex