我有一个名为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 - “单行子查询返回多行” *原因:
*操作:
帮助?我对此有点新意。
答案 0 :(得分:1)
您不需要嵌套查询来更新行:
update DOC_ADMISSAO2
set IDADE = EXTRACT(YEAR FROM DATACRIACAO) - EXTRACT(YEAR FROM DATAN)
当然,这仅计算年份之间的差异,因此,如果您有DATACRIACAO = 01/01/2016
和DATAN= 31/12/2015
,则您的年龄为1岁。
此外,正如评论中所说,将年龄存放在一张桌子中并没有多大意义,因为它可以每天更换。
因此,这可以解决您的查询问题,但最好考虑不同的表格设计并以不同的方式评估年龄。