簡體   English   中英

如何在一個數據庫表中查找其中一個字段的值與另一表中的值不同的行

[英]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 ||'%')

提前致謝

您要使用EXISTSNOT 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM