Обновление столбца на внутреннем левом соединении - PullRequest
0 голосов
/ 05 февраля 2019

Я не могу понять, как выполнить внутреннее обновление левого соединения в этом запросе (это выборочный запрос, который работает):

SELECT
    *
FROM
    emr AS e
    LEFT JOIN visit_ltnot AS v ON e.guid = v._pn
WHERE
    closedate='12-31-79' AND pat='00000906' AND apptstatus=''
    AND v.pdate='' AND emrdate <= '2013-11-26';

Мне нужно обновить закрытую таблицу emr.

Я связал следующие запросы:

UPDATE emr
FROM
    emr AS e
    LEFT JOIN visit_ltnot AS v ON e.guid = v._pn SET closedate=''
WHERE
    closedate='12-31-79' AND pat='00000906' AND apptstatus=''
    AND v.pdate='' AND emrdate <= '2013-11-26';

UPDATE emr
    SET closedate=''
FROM
    emr AS e
    LEFT JOIN visit_ltnot AS v ON e.guid = v._pn
WHERE
    closedate='12-31-79' AND pat='00000906' AND apptstatus=''
    AND v.pdate='' AND emrdate <= '2013-11-26';

Я получаю синтаксические ошибки, мне нужно обновить закрытое значение.

1 Ответ

0 голосов
/ 05 февраля 2019

Если вы используете MySQL, то это должно работать:

UPDATE emr e LEFT JOIN
       visit_ltnot v
       ON e.guid = v._pn
    SET closedate = ''
    WHERE closedate = '12-31-79' AND
          pat = '00000906' AND
          apptstatus = '' AND
          v.pdate = '' AND
          emrdate <= '2013-11-26';

Примечания:

  • Самое главное, UPDATE не имеет предложения FROM вMySQL.
  • Условие v.pdate превращает внешнее соединение во внутреннее соединение.Таким образом, вы также можете использовать inner join.
  • Вы не должны использовать форматы даты, такие как '12-31-79'.Правильный формат даты: '1979-12-31'.
  • Даты не должны храниться в виде строк, поэтому v.pdate = '' не имеет смысла.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...