根据此顺序中的主ID更新列

时间:2011-07-27 15:40:14

标签: sql group-by sql-update

这是测试代码。我希望更新city_id,以使city_id必须与select语句中显示的该城市的第一个 ID匹配。例。在这里,我希望city_id [最后一栏]为1,1,3,3

enter image description here

create table student2 (id int not null primary key  identity,
city_name varchar(25),
student_name varchar(25),
city_id int  null)


insert into student2 values('Boston','Nome',null) 
insert into student2 values('Boston','Tiger',null) 
insert into student2 values('Miami','Andy',null) 
insert into student2 values('Miami','Moran',null) 

如果完成这项工作,两个查询就没问题了。我有很多记录。创建临时表并将结果输出到文本文件也很好。在这种情况下,您将打印id和city_id

2 个答案:

答案 0 :(得分:2)

最好的方法是创建一个名为cities的新表,其中包含city_id列和city_name列。这称为规范化数据库,并降低问题的复杂性。

对于您的示例,您将拥有:

id |city_id |student_name
1  |1       |Nome
2  |1       |Tiger
3  |2       |Andy
4  |2       |Moran

city_id |city_name
1       |Boston
2       |Miami

答案 1 :(得分:1)

像这样:

update student2
set city_id =
    (select min(id) from student2 s where s.city_name = student2.city_name)
祝你好运!