您好我有一个包含该结构的表:
ID VALUE
1 3
2 5
3 12
如果我从表中查询选择id,value,value + 5。那就是结果
ID VALUE NEW_VALUE
1 3 8
2 5 10
3 12 17
我想做一个查询,指出返回整个表的id和新值,但第3列表示插入后的新值。例如,对于myQuery(id = 2,value = 8)
ID VALUE NEW_VALUE
1 3 3
2 5 8
3 12 12
可以在同一个查询中执行此操作吗?
答案 0 :(得分:2)
你可以使用WHERE子句只选择你想要的行("...if the student has the given id..."
):
update T
set col3 = col2 + 5
where id = 2
当然,在您更新之前必须存在 col3 。因此,您必须发出ALTER-TABLE语句(如果您的实现支持它)或重新创建具有所需列的表,导入原始数据(INSERT INTO YOURNEWTABLE ... SELECT ... from YOUROLDTABLE)然后更新col3。
如果您不想“保留”第三列,但只需要在查询时显示它:
select id, col2, col2 + 5 as myComputedValue
from T
where id = 2
最后,如果你想显示所有行但是有条件地改变 addend (当id不是你想要的那个时加0到col2,但是当它是5时加上5)那么你可以使用CASE语句。