2016-04-01 115 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 
    

现在,如果你忠实地有对关节个人的悲伤,请忽略我的答案。

相关问题