小仲先生 發表於 2023-10-11 00:00:00

也许是被忽略的update语句(update技巧)

<p>
        呵呵,园里的兄弟我又来写简单的文章了,希望大家不吝赐教。这次要说的是sql里面的update语句。说到这里,肯定会有很多兄弟不满意了,不就是update语句吗?谁不会写啊,update table set column=expression [where search_condition 啊。</p><p>
        但真的update语句就仅仅这样吗?它的精髓它的原理是什么呢?我们通过例子来说明:<br/></p><p>假设这张成绩表有三个字段,姓名、成绩和排名,现在只有姓名和成绩有值,怎样将他们的排名更新上去呢?</p><p>
        有朋友可能会提出类似解决方案:先还是用查询语句查询出来,然后通过游标更新排名。<br/>
        有没有更好的解决方案呢?当然是有的,答案就是用update语句。<br/><br/>
        update 成绩表 set 排名=(select count(*)+1 from 成绩表 where a.成绩&lt;成绩)<br/>
        from 成绩表 a</p><p>
        可以看到,只用一个语句就实现了。同时我们也可以发现它跟我们平常写的update语句不同,多了from。其实update语句的原理和select语句很类似,完整的update语句应该是update table set column=expression from table ,可见后面的一截完全就是个查询语句。当update的table和查询的table(也就是from后面的table)完全一致的时候则可以省略,写成我们最常见的update table set column=expression 。</p><p>
        上面仅仅是举了个例子来说明update的用法,真正在开发的时候,灵活恰当地使用update可以达到事半功倍的效果哦。</p>
頁: [1]
查看完整版本: 也许是被忽略的update语句(update技巧)