我有表ITEMS
和列URL
。我需要的只是在items.url
中找到类似的行:
两个相似行的示例:
ITEM_ID | URL
1 | www.google.com/test1/test2/test3.php
2 | www.yahoo.com/test1/test2/test3.php
3 | www.google.com/test5.php
4 | www.facebook.com/test5.php
正如您所看到的,URL与JUST具有不同的域名。
我的查询应该是:
SELECT * FROM ITEMS
WHERE URL LIKE `%google.com%`...
AND `here code probably` ???
我的查询应该返回ITEM_ID 2和4
答案 0 :(得分:2)
您可以按照从' /'开始的子字符串进行分组字符,并获取组中的最大ID。使用postgresql语法,它应该如下所示:
SELECT *
FROM ITEMS t
WHERE t.item_id IN (SELECT MAX(s.item_d)
FROM ITEMS s
GROUP BY SUBSTRING(s.url FROM POSITION('/' IN s.url)))
ORDER BY t.item_id;
更新:如果您只想要在不同域上具有相似行的Google域名,则可以使用过滤器EXISTS:
SELECT *
FROM ITEMS t
WHERE t.url LIKE 'www.google.com%'
AND EXISTS (SELECT 1
FROM ITEMS s
WHERE s.url NOT LIKE 'www.google.com%'
AND SUBSTRING(t.url FROM POSITION('/' IN t.url)) =
SUBSTRING(s.url FROM POSITION('/' IN s.url)));