Как я могу использовать функцию max () с оператором update? [Дубликат]

0

В настоящее время я работаю над проектом для класса, который требует от нас создания внешнего интерфейса для базы данных MySQL. В целях обучения мы используем только одну таблицу пациентов без автоматического увеличения для уникального идентификатора (Patient_id). Мы должны добавить новых пациентов, и для этого мы планировали иметь интерфейс С# для создания значения Patient_id равным 0, а затем иметь другой оператор для обновления этого значения до максимального значения Patient_id + 1. Я знаю, что это не практично/безопасное решение, так как оно может вызвать ошибки, но так как оно только для тестирования и не связано с другими таблицами, я не слишком обеспокоен.

Я попытался использовать базовые запросы для решения этой проблемы, установив Patient_ID = Max (Patient_ID) + 1, но это, похоже, не работает.

UPDATE patient
set patient_id = (select max(patient_id) + 1 from patient)
where patient_id = 0;

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

Теги:

1 ответ

0

Вы не можете использовать одну и ту же таблицу для выбора и обновления, но вы используете подзапрос для построения таблицы stmp и избегаете проблемы:

  UPDATE patient
  SET patient_id = (SELECT t.max_id  
                    FROM
                        (SELECT MAX(patient_id) + 1 FROM patient)) t
  WHERE patient_id = 0;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню