SQL 的一个技巧

  遇到一个需求,项目是我接手二次开发的,之前的大神设计数据库,订单表中没有订单号,现在让我加上这个号,规则是订单创建日期加上自增的ID,ID需要补足5位,例:00002,00124,01245这样。这个并不难。在a表中更新我加上的订单号:

UPDATE  dbo.a
SET     orderNo = CONVERT(VARCHAR(100), CreateDate, 112) + RIGHT(REPLICATE('0',  5) + LTRIM(Id), 5)

这样a表中的数据都能对应的起来了,也不用手工改了。接下来是要把a表中的订单号更新到b表中去,a和b用a的Id关联的。开始纠结了下,最后尝试着写出如下代码,很巧妙的解决了问题:

UPDATE  dbo.b
SET     OrderNo = ( SELECT DISTINCT
                            CONVERT(VARCHAR(100), a.CreateDate, 112)
                            + RIGHT(REPLICATE('0', 5) + LTRIM(Id), 5)
                    FROM    dbo.b
                    WHERE   b.Id= dbo.a.Id--这个地方需要注意下因为之前设计的列名完全一样,所以需要加上各自的表名,如果不一样的话,就可以不加的。
                  )

 

posted @ 2016-04-28 16:58  祁临芯  阅读(536)  评论(0编辑  收藏  举报
友情链接:初心商城