2016-05-29 6 views
0

Ich habe eine Tabelle mit Wörtern, die so aussieht?Wie kann ich überprüfen, dass ein Eintrag in einer Spalte einer Tabelle mindestens einmal in einer anderen Spalte erscheint?

CREATE TABLE [dbo].[WordForm] (
    [Word1] VARCHAR (20) NOT NULL, 
    [Word2] VARCHAR (20) NOT NULL 
} 

So sehen die Daten aus?

Word1  Word2 
-----  ----- 
abandon  abandon 
abandon  abandonment 
adapt  adapt 
adapt  adaptable 
adapt  adaptation 
adapt  adapter 
adversely adverse 
adversely adversely 
adversely adversity 

Wie kann ich überprüfen, dass jedes Wort, das in der Spalte Word1 erscheint in Wort2 mindestens einmal vorhanden ist, und auch wenn es Worte sind, die in Word1 erscheint aber nicht Wort2 Ich muss wissen, was die Worte sind.

Antwort

2

Für eine performante Lösung auf große Datensätze versuchen Sie dies:

SELECT w.Word1 as [Word 1 Not in Word 2] 
FROM WordForm w 
EXCEPT 
SELECT w.Word2 
FROM WordForm w 
; 

SELECT w.Word2 as [Word 2 Not in Word 1] 
FROM WordForm w 
EXCEPT 
SELECT w.Word1 
FROM WordForm w 
; 
+0

@Alan Kannst du erklären, welche der oben genannten 2 Fragen dieses 'jedes Wort beantwortet erscheint in der Spalte Word1 ist in Word2 vorhanden? Fehle ich etwas? –

1
SELECT w.Word1 as [Word 1 Not in Word 2] 
FROM WordForm w 
WHERE NOT EXISTS 
     (
      SELECT * 
      FROM WordForm x 
      WHERE x.Word2 = w.Word1 
     ) 

SELECT w.Word2 as [Word 2 Not in Word 1] 
FROM WordForm w 
WHERE NOT EXISTS 
     (
      SELECT * 
      FROM WordForm x 
      WHERE x.Word1 = w.Word2 
     ) 
Verwandte Themen