我有这两个表
id, name, surname, date_of_birth
)id, hire_date
)我需要将hire_date
表格上的employee
设置为date_of_birth
+ 10年。
UPDATE employee E
SET E.date_hire = add_months(D.date_of_birth, 120);
FROM employee E, personal_details D
WHERE E.ID = D.ID
奇怪的是,它不起作用,任何人都可以看到那里的东西?
答案 0 :(得分:2)
我想知道什么公司开始招聘10岁的人,但还可以。
UPDATE employee E
SET E.date_hire =
(SELECT
add_months(D.date_birth, 120)
FROM
personal_details D
WHERE
D.ID = E.ID)
答案 1 :(得分:1)
我会这样写:
UPDATE employee E
SET E.date_hire = COALESCE(
( SELECT add_months(D.date_of_birth, 120)
FROM personal_details D
WHERE E.ID = D.ID
), E.date_hire) ;
或者这 - 我觉得更直观:
UPDATE
( SELECT E.date_hire, add_months(D.date_of_birth, 120) AS new_date_hire
FROM employee E
JOIN personal_details D
ON E.ID = D.ID
)
SET E.date_hire = new_date_hire ;
答案 2 :(得分:0)
员工(id, hire_date ,薪水,奖金)
SET E. date_hire
列名称不匹配。
答案 3 :(得分:0)
您说列名是hire_date,然后设置名为date_hire的列
UPDATE employee E
SET E.date_hire = add_months(D.date_birth, 120);
在该语句的末尾有一个半冒号,这意味着sql的其余部分被视为单独的
您需要包含SELECT
才能实际检索数据
当你对那批产品进行分类时,你会更接近: - )
(我选择不只是给sql)