Подтвердить что ты не робот

Как обновить данные в одной таблице из соответствующих данных в другой таблице в 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.

4b9b3361

Ответ 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