Обновите столбец на основе основного идентификатора в этом порядке - PullRequest
0 голосов
/ 27 июля 2011

Вот тестовый код.Я хотел бы, чтобы city_id обновлялся таким образом, чтобы city_id должен совпадать с first id этого города, который появляется в операторе select.Пример.Здесь я хотел бы, чтобы 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 ]

2 голосов
/ 27 июля 2011

Лучший подход - создать новую таблицу с именем 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 голос
/ 27 июля 2011

Вот так:

update student2
set city_id =
    (select min(id) from student2 s where s.city_name = student2.city_name)

Удачи!

...