如何使用2个表和条件编写更新查询

时间:2015-08-09 14:29:53

标签: mysql

我正在尝试使用另一个名为"DEPART_NAMES_AS_SUBMITTED"的表来更新/修改名为"DEPART_NAMES_REQUIRED."的表中的部门名称。我希望仅当"DEPART_NAMES_AS_SUBMITTED"中的行号是在名为"DEPART_NAMES_REQUIRED."的第二个表中的行号范围[LOW] [HIGH]内如果行号小于/大于[LOW] [HIGH]范围,则​​部门名称应保持不变。我没有成功尝试过多种SQL,包括:

 UPDATE DEPT_NAMES_SUBMITTED INNER JOIN DEPT_NAMES_REQUIRED ON(DEPT_NAMES_SUBMITTED.LINE_NUMBER = DEPT_NAMES_REQUIRED.HIGH) AND (DEPT_NAMES_SUBMITTED.LINE_NUMBER = DEPT_NAMES_REQUIRED.LOW) SET DEPT_NAMES_SUBMITTED.DEPART_NAME = [DEPT_NAMES_REQUIRED].[DEPART_NAME]
 WHERE (((DEPT_NAMES_REQUIRED.LINE_NUMBER) Between [low] And [high]));

感谢您抽出宝贵时间阅读并回答这个问题。

1 个答案:

答案 0 :(得分:1)

如果您删除方括号并输入正确的逻辑,我认为您的查询很好:

UPDATE DEPT_NAMES_SUBMITTED ns INNER JOIN
       DEPT_NAMES_REQUIRED hr
       ON ns.LINE_NUMBER <= nr.HIGH AND 
          ns.LINE_NUMBER >= nr.LOW
    SET ns.DEPART_NAME = nr.DEPART_NAME;

请注意,表别名使查询更容易编写和读取。