ОБНОВЛЕНИЕ с НАШИМ ПРИМЕНЕНИЕМ и ГДЕ - PullRequest
1 голос
/ 26 сентября 2019

Я хочу анонимировать пользователей в моей базе данных.Так что я получил это с OUTER APPLY.Мне также нужно добавить предложение WHERE.

UPDATE u 
SET [Name] = rnd.name
FROM [dbo].[User] AS u
OUTER APPLY(SELECT TOP 1 name 
            FROM (VALUES ('Roger'), ('Kyle')) n(name)
            WHERE u.id = u.Id ORDER BY newid()) AS rnd;

Теперь я хочу добавить WHERE [Name] != 'Pete'.Как я могу это сделать?

1 Ответ

2 голосов
/ 26 сентября 2019

Во-первых, вам не нужно outer apply.Затем вы можете отфильтровать в where предложение:

UPDATE u 
    SET [Name] = rnd.name
    FROM [dbo].[User] u CROSS APPLY
         (SELECT TOP 1 name 
          FROM (VALUES ('Roger'), ('Kyle')) n(name)
          WHERE u.id IS NOT NULL   -- correlation clause needed to prevent optimization
          ORDER BY newid()
         ) rnd
    WHERE u.name <> 'Pete';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...