Как обновить данные в одной таблице из соответствующих данных в другой таблице в SQL Server 2005
У меня две таблицы в разных базах данных на одном сервере базы данных.
Обе базы данных имеют одинаковую структуру, но разные данные. Database1 (Test1) является последним, а database2 (Test2) является старой копией базы данных.
- В Test1 есть таблица с именем
Employee
с 3000 записями
- Test2 имеет таблицу с именем
Employee
с 1000 записями
Мне нужно обновить таблицу в Test1 из той же таблицы в Test2 для определенного столбца, называемого DeptID, потому что значения в таблице Employee в базе данных Test2 (старый) были обновлены. Поэтому мне нужно обновить таблицу в новой БД из таблицы в старой БД, которая имеет около 1000 строк.
Другими словами, мне нужно обновить столбец DeptID
в таблице Employee
в базе Test1
с любыми значениями, которые у меня есть в столбце DeptID
в таблице Employee
в Test2
DB.
Я знаю, что я могу восстановить сам БД, но это не решение. Мне нужно обновить значения в базе данных Test1 из базы данных Test2.
Ответы
Ответ 1
Если две базы данных находятся на одном сервере, вы должны создать SQL-инструкцию примерно так:
UPDATE Test1.dbo.Employee
SET DeptID = emp2.DeptID
FROM Test2.dbo.Employee as 'emp2'
WHERE
Test1.dbo.Employee.EmployeeID = emp2.EmployeeID
Из вашего сообщения я не совсем понимаю, хотите ли вы обновить Test1.dbo.Employee
значения из Test2.dbo.Employee
(что делает мой запрос) или наоборот (с вы упоминаете, что db на Test1
была новой таблицей......)
Ответ 2
update t2
set t2.deptid = t1.deptid
from test1 t1, test2 t2
where t2.employeeid = t1.employeeid
Ответ 3
UPDATE table1<BR>
SET column1 = (SELECT expression1<BR>
FROM table2<BR>
WHERE conditions)<BR>
[WHERE conditions];<BR>
`
UPDATE table1
SET column1 = (SELECT expression1
FROM table2
WHERE conditions)
[WHERE conditions];
`
Ответ 4
update test1 t1, test2 t2
set t2.deptid = t1.deptid
where t2.employeeid = t1.employeeid
вы не можете использовать из ключевого слова для mysql
Ответ 5
Попробуйте выполнить запрос типа
INSERT INTO NEW_TABLENAME SELECT * FROM OLD_TABLENAME;
Ответ 6
это творит чудеса - нет его очереди называть этот код формы процедуры с помощью DataTable со схемой, точно соответствующей custType создать клиента таблицы ( id int identity (1,1) первичный ключ, имя varchar (50), cnt varchar (10) )
create type custType as table
(
ctId int,
ctName varchar(20)
)
insert into customer values('y1', 'c1')
insert into customer values('y2', 'c2')
insert into customer values('y3', 'c3')
insert into customer values('y4', 'c4')
insert into customer values('y5', 'c5')
declare @ct as custType
insert @ct (ctid, ctName) values(3, 'y33'), (4, 'y44')
exec multiUpdate @ct
create Proc multiUpdate (@ct custType readonly) as begin
update customer set Name = t.ctName from @ct t where t.ctId = customer.id
end
public DataTable UpdateLevels(DataTable dt)
{
DataTable dtRet = new DataTable();
using (SqlConnection con = new SqlConnection(datalayer.bimCS))
{
SqlCommand command = new SqlCommand();
command.CommandText = "UpdateLevels";
command.Parameters.Clear();
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@ct", dt).SqlDbType = SqlDbType.Structured;
command.Connection = con;
using (SqlDataAdapter dataAdapter = new SqlDataAdapter(command))
{
dataAdapter.SelectCommand = command;
dataAdapter.Fill(dtRet);
}
}
}
Ответ 7
UPDATE Employee SET Empid=emp3.empid
FROM EMP_Employee AS emp3
WHERE Employee.Empid=emp3.empid
Ответ 8
использовать test1
Вставить в employee (deptid) выберите deptid из test2.dbo.employee