2016-04-01 2 views
0

Мне было интересно, существует ли способ проверить, существует ли какой-либо varchar из одной таблицы в другой таблице без объединения. В настоящее время я обновляю поле во временной таблице на основе того, существует ли имя в другой таблице. Я пробовал использовать =, вроде, и в, но они, похоже, не работают.MYSQL: Как узнать, существует ли varchar в другой таблице

Здесь моя временная таблица 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, но я не был уверен, что она будет работать в этом случае

+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 
    

Теперь, если вы истинно есть личное горе против суставов, игнорируйте мой ответ.

Смежные вопросы