复习sql,真应了那句话,做什么忘什么。

两张表:

表table1,有Id,areaName,areaGuid。Id为主键。

表table2,有areaName,Id1,Id2。

按照表1中areaName查表2中areaName字段相同的记录,然后把Id1填入表1中的areaGuid中。表2记录的areaName有重复,但areaId1,Id2不同。

1、可以用左连接,连接表1和表2.根据左连接的定义,一切Name以表1为准,表2中不同则舍去,但如果表2中Name相同的有多条,则表1也相对应重复自己为多条。

所以先要把表2中重复的去掉,否则表1就有可能增长数据个数。

忘了怎么查询表2中相同数据,所以只好用笨办法,幸亏知道有那些数据重复。把它们找出来插入新表repeat

INSERT INTO Table_repeat
SELECT     Id1, Name, Id2
FROM         Table_2
WHERE     (Name = '成都') OR
                      (Name = '自贡') OR
                      (Name = '攀枝花') OR

然后删除。

DELETE FROM Table_2
WHERE     (Name = '成都') OR
                      (Name = '自贡') OR
                      (Name = '攀枝花')

确保表2中数据唯一后。用表1左连接表2.并把所需的列插入新表result_1

INSERT INTO result_1
SELECT     Table_1.areaId, Table_1.areaName, Table_1.parentAreaId AS Expr1, Table_2.Id1
FROM         Table_1 LEFT OUTER JOIN
                      Table_2 ON Table_1.areaName = Table_2.Name

注意看是否条目增加了。否则表2中重复条目还有没有找出来的。

还有一个命令看,是否数据都是唯一SELECT DISTINCT 列名称 FROM 表名称。

好久没有用sql了,好像最后用都是sql2000了,一晃眼,都sql2008了。

这次第一次用,好像比以前的简单多了。不过好多东西都忘了。

 

 

 

posted on 2012-05-31 14:19  rorodo  阅读(198)  评论(0)    收藏  举报