Обновить И выбрать в одном операторе (с 1 предложением WHERE) - PullRequest
1 голос
/ 07 июля 2019

Как я могу упростить следующий оператор SQL до 1 WHERE предложение:

SELECT * 
FROM tabA 
WHERE (colCar IS NULL OR colCar = '') 
   OR (colBike IS NULL OR colBike = '') 
   OR (colTrain IS NULL OR colTrain = '')

UPDATE tabA 
SET Distance = 999 
WHERE (colCar IS NULL OR colCar = '') OR 
      (colBike IS NULL OR colBike = '') OR 
      (colTrain IS NULL OR colTrain = '')

Это утверждение не имеет смысла, но работает нормально.

Я просто хочу избежатьиспользуйте предложение WHERE дважды.

Некоторые идеи?

Заранее спасибо!Майк

SQL Server

SELECT * 
FROM tabA 
WHERE (colCar IS NULL OR colCar = '') 
   OR (colBike IS NULL OR colBike = '') 
   OR (colTrain IS NULL OR colTrain = '')

UPDATE tabA 
SET Distance = 999 
WHERE (colCar IS NULL OR colCar = '') 
   OR (colBike IS NULL OR colBike = '') 
   OR (colTrain IS NULL OR colTrain = '')

Код работает нормально

1 Ответ

0 голосов
/ 07 июля 2019

Вы можете использовать предложение OUTPUT для возврата обновленных строк:

UPDATE tabA 
SET Distance = 999
OUTPUT deleted.colCar
     , inserted.colCar
     , deleted.colBike
     , inserted.Distance
WHERE (colCar IS NULL OR colCar = '') OR 
      (colBike IS NULL OR colBike = '') OR 
      (colTrain IS NULL OR colTrain = '')
...