Aus dem folgenden Datenskript möchte ich als Auswahlergebnis nur die letzte Kombination ('1111111113', 'viber') erhalten. Ich möchte die Temp-Tabelle durchsuchen und versuchen, Nummern zu finden, die nur mit einem Typ verwendet wurden (für mein Beispiel nur 'Viber').So erhalten Sie ein bestimmtes Ergebnis aus einer SQL-Tabelle
CREATE TABLE #temp
(number NVARCHAR(MAX),
[type] NVARCHAR(MAX)
);
INSERT INTO #temp
VALUES
('1111111111', 'tel'),
('1111111111', 'tel'),
('1111111111', 'viber'),
('1111111111', 'viber'),
('1111111111', 'tel2'),
('1111111111', 'tel2'),
('1111111112', 'tel'),
('1111111112', 'tel'),
('1111111112', 'tel2'),
('1111111112', 'tel2'),
('1111111113', 'viber'),
('1111111113', 'viber');
Mein erster Gedanke war die folgende Auswahlabfrage
SELECT DISTINCT
*
FROM #temp
WHERE [type] = 'viber'
AND number NOT IN
(
SELECT number
FROM #temp
WHERE [type] <> 'viber'
);
Aber ich versuche, wenn zu finden es eine andere Art und Weise vielleicht effizienter als das ist. Mein Tisch wird Millionen von Daten enthalten, also muss ich sicher sein, dass das Ergebnis meiner Suche schnell genug ist.
Vielen Dank im Voraus.
PS. Dies ist mein erstes Mal, dass ich nach Jahren des Lesens etwas auf stackoverflow gepostet habe. Bitte entschuldigt mich, wenn ich etwas falsch gemacht habe.