MYSQL; Обновить таблицу A на основе соединения из таблицы A и таблицы B

Справа я скажу, что считаю, что хочу:

Обновить несколько строк с помощью оператора select. Кажется, ответ заключается в том, что я хочу делать.

Мои таблицы выглядят следующим образом. tPatientsIDs содержит только два столбца: keyid и uid.

tEyeResults содержит столбец с именем Patientid и столбец с именем puid. Значения Patientid совпадают с uid столбца из tPatientsIDs, а puid пуст, так как он был создан путем недавнего изменения таблицы.

Все, что я хочу сделать, это установить для значения puid значение keyid в tPatientIDs, которое соответствует значению столбца Patientid.

Вот запрос, который я использую на основе ответа на SO:

UPDATE tEyeResults SET puid = tPatientIDs.keyid FROM tPatientIDs WHERE 
tPatientIDs.uid = tEyeResults.patientid; 

Несмотря на то, что структура кажется идентичной ответу, я получаю сообщение об ошибке:

You have an error in your SQL syntax; check the manual that corresponds to 
your MySQL server version for the right syntax to use near 'FROM 
tPatientIDs 
WHERE tPatientIDs.uid = tEyeResults.patientid' at line 1

ваша ссылка предназначена для sqlserver, но вы пометили mysql - обновление нескольких таблиц - одно из различий между sqlserver и mysql. пожалуйста, прочтите dev.mysql.com/doc/refman/8.0/en/update.html

P.Salmon 15.12.2018 12:00
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
31
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте JOIN с вашим обновлением

UPDATE tEyeResults e 
JOIN tPatientIDs p ON p.keyId = e.patientId
SET e.puid = tPatientIDs.keyid 

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

Спасибо! Получилось именно то, что я хотел!

aarelovich 15.12.2018 12:38

Другие вопросы по теме