以下总结源自后边的三个参考思索和测试而来:　我们有一张行政区划表,为了查询速度的优化,我们需要在这张表中,将每个乡镇的记录中写入其所属的省、市、县,　表如下:　当然,我们可以使用游标或在存储过程中使用循环来实现这个这个需求,但是,那样做代码写起来似乎不是很简单方便,这里就不再过多讲述游标和存储过程的实现过程了,游标方式有想法的可以参考下边的参考外链　(https://www.cnblogs.com/freshman0216/archive/2008/08/13/1267437.html)　,存储过程中的循环的核心代码如下:　declare　@a　int　set　@a=61　while　@a<=80　begin　set　@a+=1;　--update　t_area　set　temp_xian_name=null　end　这里我们主要讲述直接使用　update子查询的方式来实现这个目标:　首页,我们要回归一个原始知识点的认知　,　因为这个知识点实在是太陌生了,那就是　update　是支持子查询的,而且,　update　语句的完整原始语法应该是:　update　table　set　column=expression　from　table　[where　search_condition]　,　其　后面的一截　可以说　完全就是个查询语句。　当update　的table　和查询的　table　(也就是　from　后面的　table　)完全一致的时候则可以省略,写成我们最常见的　update　table　set　column=　expression　[where　search_condition]　但是,由于我们天天写后边这种形式且因为　update　语句中要求不得对　update　后边的表取别名,造成了我们潜意识地认为　update　后边只能在自已这一张表内　where　来where　去地查询　于是,我们可以用一个清楚点的写法来呈现这个原始语法:　update　t_area　[BieMing]　set　[BieMing].temp_xian_name　=　[select]　[BieMing].code　[from]　[BieMing]　where　[BieMing].temp_xian_name　is　not　null　其中,所有　[]部分实际上都是可以(或者必须)被省略的　那