2016-09-16 4 views
0

Tor mit:
die Daten in der Tabelle Datees entfernen, indem Sie die Variable @remove von dateTbl mitentfernen Daten Datumzeit

Das Ergebnis

'2016-01-1 00:00:00.000' 
'2016-01-4 00:00:00.000' 
'2016-01-5 00:00:00.000' 

in Tabelle Datees sein sollte.

Es ist Daten

'2016-01-3 00:00:00.000' 
'2016-01-5 00:00:00.000' 

Das soll

Problem entfernt werden:
Ich kann einfach nicht eine entsprechende Lösung zu diesem Zusammenhang finden, wenn Sie die Daten als Datum haben.

Info:
Der Inhalt der Variablen @remove kann

CREATE TYPE dateTbl AS TABLE 
( 
    dateID datetime 
); 


CREATE TABLE Datees 
(
    dateID datetime 
); 

INSERT INTO Datees 
VALUES 
('2016-01-1 00:00:00.000'), 
('2016-01-2 00:00:00.000'), 
('2016-01-3 00:00:00.000'), 
('2016-01-4 00:00:00.000'), 
('2016-01-5 00:00:00.000') 

//------------------------ 

DECLARE @remove as dateTbl 

INSERT INTO @remove 
VALUES 
('2016-01-3 00:00:00.000'), 
('2016-01-4 00:00:00.000') 

select a.* 
from @remove a 
+1

Sie haben eine gute Job-Buchung bereitwillig Verbrauchsdaten. Ich verstehe jedoch nicht, was Sie zu tun versuchen. –

+1

Aaaaund das gewünschte Ergebnis ist? – Lamak

+0

delete datees wo dateid in (dateid von @remove) ? –

Antwort

3

unterscheiden Sie eine Abfrage wie folgt verwendet werden:

DELETE d 
FROM Datees AS d 
JOIN @remove AS t ON d.dateID = t.dateID 

Die obige Abfrage aus der Tabelle entfernen wird Datees alle passenden Datensätze in der Tabelle Variable @remove.

+0

Nicht sicher, warum der Downvote hier. Dies scheint eine große Vermutung dafür zu sein, wonach der OP gesucht hat. –

+0

Plus1 dies ist die richtige Antwort, auch nach mehreren Lesungen der Frage –

+0

Vielen Dank für Ihre Hilfe! –

0

Versuchen Sie diese:

delete datees where dateid in (select dateid from @remove) 
+0

Es ist unmöglich zu verstehen, diejenigen, die ohne Grund abwerten. Wahrscheinlich tun sie das nur, weil sie nicht verstehen;) –

+0

Ja, Sie haben Recht –

0

Wahrscheinlich ist es das, was Sie gemeint:

DECLARE @Datees TABLE (dateID DATETIME); 

INSERT INTO @Datees 
VALUES ('2016-01-1 00:00:00.000'), 
     ('2016-01-2 00:00:00.000'), 
     ('2016-01-3 00:00:00.000'), 
     ('2016-01-4 00:00:00.000'), 
     ('2016-01-5 00:00:00.000'); 

------------------------ 

DECLARE @remove AS TABLE (dateID DATETIME); 

INSERT INTO @remove 
VALUES ('2016-01-3 00:00:00.000'), 
     ('2016-01-4 00:00:00.000'); 

SELECT * 
FROM @Datees d 
WHERE NOT EXISTS (SELECT * 
        FROM @remove r 
        WHERE r.dateID = d.dateID); 

Zur Entfernung:

delete 
    FROM @Datees 
    WHERE EXISTS (SELECT * 
         FROM @remove r 
         WHERE r.dateID = [@datees].dateID); 

jedoch mit Datetime-Werte, ist es vielleicht nicht ganz sein einfach, wenn die Werte auch Zeitteile haben. Dann könnten Sie Casting oder Konvertieren in String-Werte für den Vergleich verwenden. Wenn Sie eine solche Notwendigkeit haben, geben Sie weitere Informationen an.