mysql 尝试创建过程以更新特定类别中的员工薪金时出错

sxissh06  于 2023-02-15  发布在  Mysql
关注(0)|答案(1)|浏览(120)

我想更新员工数据库中助理工程师的工资,而不需要对工资、头衔和员工表进行内部连接。可以吗?谢谢。
我在试这个剧本。

DELIMITER //
DROP PROCEDURE IF EXISTS psegui3 //
CREATE PROCEDURE psegui3()
-- we update first Assitant Egineer
UPDATE salaries s
    SET s.salary = salaries + 500 
    INNER JOIN 
    (SELECT salaries.emp_no, titles.title FROM salaries)
    WHERE titles.title='Assistant Engineer' AND titles.to_date='9999-01-01' AND
salaries.to_date='9999-01-01')
END //
DELIMITER ;

我自己在学。谢谢

2guxujil

2guxujil1#

您在UPDATE查询中遇到了许多问题,这些问题与过程无关。它们应该是:

UPDATE salaries AS s
JOIN titles AS t ON s.emp_no = t.emp_no
SET s.salary = s.salary + 500
WHERE t.title = 'Assistant Engineer' AND t.to_date = '9999-01-01' AND s.to_date = '9999-01-01'
  1. JOIN出现在SET之前。
    1.您需要表之间的连接条件。
    1.不需要与子查询联接。
    1.如果你有一个子查询,它需要从titles中选择,而不是salaries,在这种情况下,它不能选择salaries.emp_no
    1.为表分配别名时,必须在查询的其余部分使用别名,而不是完整的表名。

相关问题