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