破解查询Oracle SQL

时间:2012-12-08 10:43:12

标签: sql oracle

我有这两个表

  • personal_details 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

奇怪的是,它不起作用,任何人都可以看到那里的东西?

4 个答案:

答案 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)