Postgresql中的update语句对alias的支持没有select中支持的完善,有个不大不小的问题。虽然不严重,但不知道的话还是会引起很大的困惑。
首先看一下Postgresql对update的帮助:
- Command:UPDATE@H_301_8@
- Description:updaterowsofatable@H_301_8@
- Syntax:@H_301_8@
- UPDATE[ONLY]table[[AS]alias]@H_301_8@
- SET{column={expression|DEFAULT}|@H_301_8@
- (column[,...])=({expression|DEFAULT}[,...])}[,...]@H_301_8@
- [FROMfromlist]@H_301_8@
- [WHEREcondition|WHERECURRENTOFcursor_name]@H_301_8@
- [RETURNING*|output_expression[ASoutput_name][,...]]@H_301_8@
- updatexuepeng.bbasbsetb.a=3wherea=2;@H_301_8@
因此我们虽然使用了alias,但是在set的语句中还是不能使用这个别名的。有意思的是,在where的子语句中,却是能够正常使用alias。以下的语句是正确的:
- updatexuepeng.bbasbseta=3whereb.a=2;@H_301_8@