[英]How to I find rows in one database table where a value of one field is NOT LIKE a value in another table
我的SQL知識非常有限,所以請多多包涵!
我試圖基於與另一個表中的字段不匹配的字段之一返回一個表中的行。
我的一個表有一個URL和站點字段,例如表A。另一個表使用站點名稱表B列出了一些站點。
例如,表A的url字段可以是' http://google.it/aaa ',其名稱字段是'google'
在表BI中,在“站點”和“名稱”字段下有一個站點列表。 下面的例子:
一項:網站google.co.uk
命名谷歌
另一個條目:網站google.fr
命名谷歌
第三個條目:Site bing.com
姓兵
我想返回表A中的值,其中url字段與表B中的“站點”字段不匹配。為此,我需要使用表A中的“名稱”字段來查找表中的“站點”值B-如果沒有匹配項,我希望返回條目。 因此,在這種情況下,我的網址是“ http://google.it/aaa ”,因此當它檢查表B中是否有google.it條目時,它將找不到任何內容,因此將其返回。
我正在使用MySQL數據庫,這兩個表處於不同的架構。 我已經嘗試過一些SQL,這是我想出的:
SELECT tablea.url,tablea.name FROM schema1.tablea內部JOIN schema2.tableb ON tablea.url不喜歡('%'|| tableb.site ||'%')
提前致謝
您要使用EXISTS
和NOT EXISTS
:
SELECT
tablea.url,
tablea.name
FROM
schema1.tablea
WHERE
EXISTS
(SELECT
NULL
FROM
schema2.tableb
WHERE
tablea.name = tableb.name)
AND NOT EXISTS
(SELECT
NULL
FROM
schema2.tableb
WHERE
tablea.name = tableb.name
AND tablea.url LIKE ('%' || tableb.site || '%'))
這將為您提供tablea中的所有行,其中tableb中存在具有相同名稱的行,但是tableb中不存在具有相同名稱且其站點包含tablea的URL的行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.