Удалить из выбора в SQL Server 2000? - PullRequest
1 голос
/ 19 июля 2011

Я хочу удалить все, что возвращается этим запросом выбора:

SELECT  u.*
FROM    (
        SELECT  userName, groupId, MAX(userId) AS maxId
        FROM    userTable
    where userName <> '' and userName is not null
        GROUP BY
                userName, groupId
        HAVING  COUNT(*) > 1
        ) q
JOIN    userTable u
ON      u.userName = q.userName
        AND u.groupId= q.groupId
        AND u.userId <> q.maxId)

Как это сделать?

Ответы [ 2 ]

10 голосов
/ 19 июля 2011

Структурируйте свое удаление так:

DELETE U
FROM U ...
JOIN Q ...
WHERE Foo ...

Или, если у вас уже есть элегантный запрос, вы можете сделать это:

DELETE Usertable WHERE userId IN (
   SELECT UserID FROM ... /* big complex query here */
)
5 голосов
/ 19 июля 2011

просто замените SELECT u.* на DELETE U

...