我尝试运行一个查询,该查询比较另一列中是否存在来自列的子字符串:
表“ Tracker”包含具有跟踪域的“ Url”列。 表“抓取”包含带有网址的列“ TargetUrl”。
我想检查TargetUrl中是否存在跟踪域,如果有,请加入它们,以便将两个表中的所有数据都存储在一起。
表格大致如下:
跟踪器表
+----+---------------+----------------+-------------------------------+
| ID | Category | Entity |Urls |
+----+---------------+----------------+-------------------------------+
| 1 | Sessionreplay | Hotjar | hotjar.com |
| 2 | Analytics | Sometool | somesite.com |
| 3 | Adverts | Someothertool | someothersite.com |
+----+---------------+----------------+-------------------------------+
爬网表
+----+---------------+---------+------+-------------------------------+
| ID | Mainpage | Some Data |TargetUrl |
+----+---------------+---------+------+-------------------------------+
| 1 | xyz.com | 111111 | https://script.hotjar.com/1232|
| 2 | yzx.com | 22222222 | https://somesite.com/423423 |
| 3 | zxy.com | 3333333333333 | notrackingscript.com |
+----+---------------+----------------+-------------------------------+
这就是我走了多远
SELECT * FROM Crawl WHERE Crawl.TargetUrl like '%hotjar.com%'
从Table Crawl中返回所有内容,其中TargetUrl列中存在“ hotjar.com”。
SQL Gurus的任何人都可以通过该查询帮助新手吗?
答案 0 :(得分:0)
您可以使用LIKE运算符联接表:
select *
from crawl c inner join tracker t
on c.targeturl like '%' || t.urls || '%'
这将返回两个表中的所有列。
您可以通过选择以下列来更改它:
select t.id, t.category, c.mainpage, ...
联接的条件是column tracker.urls
包含在列crawl.targeturl
中。