2016-03-28 4 views
2

Ich habe alles versucht, um dies zur Arbeit zu bringen. Ich weiß, dass es für MySQL funktioniert, aber ich bin ratlos, wie dies in SQL Server funktioniert.Mehrere Spalten und mehrere Kriterien SQL Server Löschen?

mit dem Code von hier: MySQL delete multiple rows in one query conditions unique to each row und hier Fiddle MySQL

DELETE FROM tab 
WHERE (col1, col2) IN (('2016/3/1', 2), ('2016/3/2', 4), ('2016/3/3', 6)); 

Ich weiß, dass Sie dies in SQL Server unten tun können, aber dies nur Spalte einer Adresse.

DELETE FROM tab 
WHERE col2 IN (2, 4, 6); 

Fiddle SQL Server

Wie kann man die gleiche Sache in SQL Server erreichen?

Antwort

3

Versuchen Sie folgendes:

DELETE tab 
FROM tab 
JOIN (VALUES ('2016/3/1',2),('2016/3/2',4),('2016/3/3',6)) AS t(d, v) 
    ON tab.col1 = t.d AND tab.col2 = t.v; 

Die Abfrage von SQL Server verwendet Table Value Constructor, um eine in-line-Tabelle zu erstellen, die alle Kriterien Werte enthält.

Demo here

+0

, Danke, das perfekt funktioniert. –

Verwandte Themen