2010-07-17 4 views
5

Это должен быть простой вопрос, но я пока не нашел четкого ответа. Кто-нибудь знает, как удалить несколько строк из одной таблицы в SQL Server 2005, используя один запрос? Я задавался вопросом, может ли это быть противоположностью вставки нескольких строк, используя метод UNION ALL. Так будет ли это работать? :Удаление нескольких строк одним запросом

DELETE FROM Table (Name, Location) 
SELECT 'Name1', 'Location1' 
UNION ALL 
SELECT 'Name2', 'Location2' 
UNION ALL 
SELECT 'Name3', 'Location3' 
etc... 

EDIT: Я хотел бы отметить, что это ссылка таблица, в которой я пытаюсь удалить записи из. Первичного ключа нет, и любые значения столбцов могут повторяться. Поэтому я должен быть уверен, что оба столбца содержат определенное значение для той же записи, прежде чем я удалю запись.

ответ

9

Вы можете попробовать это:

DELETE FROM YourTable 
WHERE (Name = 'Name1' AND Location = 'Location1') 
OR (Name = 'Name2' AND Location = 'Location2') 
OR (Name = 'Name3' AND Location = 'Location3') 
+0

Диапазон, где предложение может быть уместным, если вы хотите удалить коллекцию до определенной даты. –

1
DELETE FROM T 
FROM YourTable T 
INNER JOIN (
SELECT 'Name1' AS Name, 'Location1' AS Location 
UNION ALL 
SELECT 'Name2', 'Location2' 
UNION ALL 
SELECT 'Name3', 'Location3' 
) T2 
ON T2.Name = T.Name 
AND T2.Location = T.Location 
+0

'FROM ' в этой ссылке подразумевается, что разрешены JOIN. Я уверен, что они такие, как я использовал их много раз. :) –

+1

Просто пробовал против MSSQL 2005 и отлично работает OMG Ponies. –

2

Использование CTE работал для меня - гораздо проще, чем при использовании ПРС и скобки:

WITH del AS (
    SELECT 'Name1' AS nam, 'Location1' AS loc 
    UNION ALL 
    SELECT 'Name2', 'Location2' 
    UNION ALL 
    SELECT 'Name3', 'Location3') 
DELETE FROM CLASSES 
WHERE EXISTS(SELECT NULL 
       FROM del d 
       WHERE d.name = name 
       AND d.loc = location) 

Вы не можете определить псевдоним таблицы для таблица в заявлении удаления; любые ссылки на столбцы без псевдонима таблицы можно считать относящимися к единственной таблице без одной, но она также зависит от области.

Смежные вопросы