更新年龄SQL Oracle

时间:2016-04-05 14:07:10

标签: sql oracle sql-update

我有一个名为DOC_ADMISSAO2的表,其中我有生日的日期(数据类型是日期)和另一个日期(数据类型是日期),我想要年龄。

我使用了这个查询:

update DOC_ADMISSAO2 
set IDADE = (SELECT EXTRACT(YEAR FROM DATACRIACAO) - EXTRACT(YEAR FROM DATAN)
             from DOC_ADMISSAO2));

但它向我显示了这个错误:

  

从命令行第2行开始出错 - 更新DOC_ADMISSAO2设置IDADE   =(SELECT EXTRACT(来自DATACRIACAO的年份) - 来自DOC_ADMISSAO2的提取(来自DATAN)错误报告 - SQL错误:ORA-01427:subconsulta   delinhaúnicadevolvemais que uma linha   01427. 00000 - “单行子查询返回多行”   *原因:
  *操作:

帮助?我对此有点新意。

1 个答案:

答案 0 :(得分:1)

您不需要嵌套查询来更新行:

update DOC_ADMISSAO2
set IDADE = EXTRACT(YEAR FROM DATACRIACAO) - EXTRACT(YEAR FROM DATAN)

当然,这仅计算年份之间的差异,因此,如果您有DATACRIACAO = 01/01/2016DATAN= 31/12/2015,则您的年龄为1岁。 此外,正如评论中所说,将年龄存放在一张桌子中并没有多大意义,因为它可以每天更换。

因此,这可以解决您的查询问题,但最好考虑不同的表格设计并以不同的方式评估年龄。