2016-04-01 3 views
0

Ich fragte mich, ob es eine Möglichkeit gab zu überprüfen, ob ein bestimmter Varchar aus einer Tabelle in einer anderen Tabelle ohne eine Verknüpfung vorhanden ist. Ich aktualisiere gerade ein Feld in einer temporären Tabelle basierend darauf, ob ein Name in einer anderen Tabelle existiert. Ich habe versucht, =, wie, und in, aber sie scheinen nicht zu arbeiten.MYSQL: Wie zu sehen, ob ein Varchar in einer anderen Tabelle existiert

Hier ist meine temporäre Tabelle temp_countries und ich möchte sehen, ob jeder organization_name in Ländern in meiner Datenbanktabellenorganisation endet.

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 
); 

Ich sah vielleicht GROUP_CONCAT verwenden, aber ich war nicht sicher, ob es in diesem Fall funktionieren würde

+0

Warum versuchen Sie, den Beitritt um jeden Preis zu vermeiden? –

Antwort

0

Ich verwende ein in meiner Anfrage kommen, vielleicht werden Sie die Antwort nicht akzeptieren, aber Ich verstehe nicht, warum du keinen Join verwendest, vielleicht war das, was du wirklich vermeiden wolltest, eine Unterabfrage.

So würde ich dann machen. Mit Gelenken:

  • Sets alles als "schlechte Daten"

    UPDATE temp_countries SET is_good_data = 0 
    
  • Dann wird ein beitreten, wenn möglich (impliziert o.name nicht null und existiert in Ihrer DB), setzen Sie sich auf „gut Daten“

    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 
    

Nun, wenn Sie wirklich eine persönliche Trauer gegen Gelenke haben, ignorieren Sie bitte meine Antwort.

Verwandte Themen