当前位置: 代码迷 >> SQL >> SQL 的一个技艺
  详细解决方案

SQL 的一个技艺

热度:423   发布时间:2016-05-05 09:31:11.0
SQL 的一个技巧

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

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

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

UPDATE  dbo.bSET     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--这个地方需要注意下因为之前设计的列名完全一样,所以需要加上各自的表名,如果不一样的话,就可以不加的。                  )

 

  相关解决方案