2016-04-01 43 views
0

我想知道是否有方法檢查一個表中的某個varchar是否存在於沒有連接的另一個表中。我目前正在更新一個臨時表中的字段,根據名稱是否存在於另一個表中。我嘗試過使用=,like和in,但他們似乎不工作。MYSQL:如何查看是否在另一個表中存在varchar

這裏我的臨時表是temp_countries,我想看看每個國家的organization_name是否在我的數據庫表組織中退出。

UPDATE temp_countries SET is_good_data = 0 
WHERE organization_name NOT IN 
(
    SELECT DISTINCT o.name 
    FROM db.country as c 
    LEFT JOIN db.organization as o 
    ON c.organization_fk = o.id  
    WHERE o.name IS NOT NULL 
); 

我擡起頭,也許使用GROUP_CONCAT,但我不知道它會在這種情況下工作

+0

你爲什麼要不惜一切代價避免加入? –

回答

0

我用我的查詢聯接,所以也許你不會接受的答案,但我不明白你爲什麼不使用連接,也許你真正想避免的是一個子查詢。

這就是我將要做的。隨着關節:

  • 一切設置爲「壞數據」

    UPDATE temp_countries SET is_good_data = 0 
    
  • 那麼如果一個連接是可能的(指o.name不爲空,並在您的數據庫存在),將其設置爲「好數據」

    UPDATE 
        temp_countries tc 
        INNER JOIN db.organization o o.name = tc.organization_name 
        INNER JOIN db.country c ON c.organization_fk = o.id 
    SET tc.is_good_data = 1 
    

現在,如果你忠實地有對關節個人的悲傷,請忽略我的答案。

相關問題