如何使用sql中的另一列计算列?
创建表查询是: 创建表目录(id int、ra double、decl double、zone int) 分区值根据decl计算,公式如下: 铸造(地板(decl)为整数) 我已经插入了表中所有的id,ra,decl值,然后我必须计算区域值 如何在sql查询中计算表的区域值如何使用sql中的另一列计算列?,sql,monetdb,Sql,Monetdb,创建表查询是: 创建表目录(id int、ra double、decl double、zone int) 分区值根据decl计算,公式如下: 铸造(地板(decl)为整数) 我已经插入了表中所有的id,ra,decl值,然后我必须计算区域值 如何在sql查询中计算表的区域值 **在另一个extractedcatalog表中,我想从sql中的ra、decl计算y: 更新extractedcatalog集x=(cos(弧度(decl))cos(弧度(ra)); 但是回应:连接终止! 我的sql有问题
**在另一个extractedcatalog表中,我想从sql中的ra、decl计算y: 更新extractedcatalog集x=(cos(弧度(decl))cos(弧度(ra)); 但是回应:连接终止! 我的sql有问题吗*
非常感谢 您将希望执行以下操作:
update catalog set zone = CAST(FLOOR(decl) AS INTEGER);
你还没做完吗
update catalog set zone=CAST(FLOOR(decl) AS INTEGER);
如果这不起作用,请尝试将其作为自连接:
update catalog set zone=CAST(FLOOR(a.decl) AS INTEGER)
from catalog a
where 1=1;
我目前没有可用的DB实例,因此您必须自己检查这些实例
正如另一个人指出的,实际上根本不需要存储zone,只需将其作为计算值返回即可
select CAST(FLOOR(a.decl) AS INTEGER) as zone
from catalog a
where 1=1;
一个示例数据库模式会有所帮助!!两点。首先,floor()返回一个整数,因此cast()是多余的。接下来,规范化规则之一是不存储计算值。只要在需要的时候选择计算,你怎么会认为数据库引擎是mysql呢?OP没有指定任何内容。我目前没有任何DB引擎,但答案是相当通用的SQL,应该可以在任何DB上工作,几乎没有修改。我已经更正了我的答案,以反映你的挑剔:-p你能告诉我1=1是什么意思吗?这是一种使用where子句选择所有行的方法。可能不需要它*在另一个表extractedcatalog中,我想从ra计算y,在sql中计算decl:update extractedcatalog集合x=(cos(radians(decl))cos(radians(ra));但是回应:连接终止!我的sql有问题吗?ra、decl都插入到表中。