关于内左更新列加入

问题描述 投票:0回答:1

我想不出该怎么办内左此查询加入更新(这是选择查询什么工作):

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';

我需要更新电子病历表closedate。

我已经追平以下查询:

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';

我得到的语法错误,我需要更新closedate值。

mysql sql
1个回答
1
投票

如果你正在使用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没有MySQL中的FROM条款。
  • 条件v.pdate被转动外连接到内连接。所以,你还不如用inner join
  • 你不应该使用日期格式,如'12-31-79'。正确的日期格式是'1979-12-31'
  • 日期不应该被存储为字符串,因此v.pdate = ''没有意义。
© www.soinside.com 2019 - 2024. All rights reserved.