MYSQL:如何查看另一个表中是否存在varchar

时间:2016-04-01 13:13:26

标签: mysql sql-update set varchar

我想知道是否有办法检查一个表中的某个varchar是否存在于没有连接的另一个表中。我目前正在更新临时表中的字段,具体取决于另一个表中是否存在名称。我已经尝试过使用=,like和in但它们似乎没有用。

这里我的临时表是temp_countries,我想查看各个国家/地区的组织名称是否在我的数据库表组织中退出。

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,但我不确定它会在这个实例中起作用

1 个答案:

答案 0 :(得分:0)

我在查询中使用了一个连接,所以也许你不接受答案,但我不明白为什么你不会使用连接,也许你真正想要避免的是一个子查询。< / p>

这就是我要做的。关节:

  • 将所有内容设为“错误数据”

    UPDATE temp_countries SET is_good_data = 0
    
  • 然后,如果可以进行连接(暗示o.name不为空且存在于您的数据库中),请将其设置为“good data”

    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
    

现在,如果你真的对关节有个人的悲伤,请忽略我的回答。