Как написать обновление SQL с помощью выбора SQL - PullRequest
0 голосов
/ 07 октября 2011

Я хочу написать оператор SQL для обновления, но одно условие этого оператора - результат оператора SQL для выбора, и я также хочу вернуть результат оператора SQL для выбора.

Вот так:update ... set ... where id = (select id from ...)

Я хочу вернуть значение id обратно.

Кто-нибудь знает, как мне это сделать?

Заранее спасибо!

Ответы [ 4 ]

2 голосов
/ 07 октября 2011

Я не верю, что это возможно в одном утверждении. Обновите, затем запросите (выберите) новое значение или сначала запросите значение, а затем отправьте обновление.

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

0 голосов
/ 07 октября 2011

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

Таким образом, вам придется использовать как минимум два запроса:

  1. выбрать нужные идентификаторы
  2. вызвать запрос на обновление, передав в качестве параметра ранее выбранные идентификаторы
0 голосов
/ 07 октября 2011

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

Для второго запроса, возвращающего значение id, я знаю, что это возможно в DB2, иможет быть, другие тоже реализуют этот синтаксис:

SELECT id FROM FINAL TABLE (
  update ... set ... where id = (select id from ...)
)

Это работает также для операторов INSERT и DELETE.(См. документацию .)

0 голосов
/ 07 октября 2011

Это невозможно во всех известных мне базах данных Java. Возможно, вам нужно разделить запрос и обновить его на Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...