如何使用从同一记录的另外两列中的值派生的计算数据更新所有行?
情况如下:
我有一张名为customers
的表格。它有4列 - Customer_ID
,Customer_Name
,Coordinate_X
和Coordinate_Y
'。由于使用数据创建和填充表格,我添加了一个名为Distance
我想要做的是在Distance
列填充计算距离(0,0)到每行Coordinate_X
和Coordinate_Y
列中指定的位置。我想我可以使用毕达哥拉斯的理论 - 当我使用查询时会出现正确的值:
Select SQRT(Power(customers.coordinate_x,2) + Power(customers.coordinate_y,2)) from customers
我摆弄着试图触发 - 由于缺乏经验而失败了。 然后我尝试使用查询填充列 - 也失败了。
我一直在尝试这样的事情;
update customers set distance = (Select SQRT(Power(customers.coordinate_x,2) + Power(customers.coordinate_y,2)) from customers)
没有什么工作 - 我得到的最好的是ORA-01427: single-row subquery returns more than one row
答案 0 :(得分:4)
查询比您正在做的更简单:
update customers
set distance = SQRT(Power(coordinate_x, 2) + Power(coordinate_y, 2))
答案 1 :(得分:1)
create table customers (
customer_id number,
customer_name varchar(255),
coordinate_x number,
coordinate_y number,
distance number generated always as (SQRT(Power(coordinate_x, 2) + Power(coordinate_y, 2))) VIRTUAL
);
请参阅此sqlfiddle:http://sqlfiddle.com/#!4/c6db3/4