Je suis encore en train d'apprendre le SQL. J'ai une question sur la mise à jour de la table. Comment puis-je mettre à jour ma table en fonction d'une autre table? S'il vous plaît voir l'exemple ci-dessous:SQL Server débutant: comment mettre à jour les données de table d'une autre table?
create table batch_info (
batch_key int identity(1, 1) not null primary key,
batch_num int not null,
batch_name varchar(50) null,
batch_start datetime null,
batch_end datetime null,
table_name varchar(50) null,
insert_rows int null
)
go
insert into batch_info (batch_num, batch_name, batch_start)
values ('32', 'Batch_to_insert_rows', '20110414')
go
select * from batch_info
create table ref_table (
bat_num int not null,
bat_end_date datetime null,
bat_table_name varchar(50) null,
bat_ins_rows int null,
)
go
insert into ref_table
values ('32','20110414 02:12:00.000','Table1','10'),
('32','20110414 02:12:00.000','Table2','33'),
('32','20110414 02:12:00.000','Table3','12')
select * from ref_table
--How can I update batch_info table to get this info?
select
bi.batch_key,
bi.batch_num,
bi.batch_name,
bi.batch_start,
rt.bat_end_date,
rt.bat_table_name,
rt.bat_ins_rows
from batch_info as bi
inner join ref_table as rt on bi.batch_num = rt.bat_num
Edit: clé de lot est porteuse de sorte qu'il devrait être progressive, et non (1, 1, 1) comme dans ma requête de jointure.
@Jeffrey +1 pour vous d'avoir répondu à la question sans un curseur (ick) comme je l'ai suggéré. Mais comme nous sommes tous les deux d'accord, cela devrait être deux tables. – Jim
Merci. La première instruction génère une erreur: Msg 8120, niveau 16, état 1, ligne 9 La colonne 'ref_table.bat_num' n'est pas valide dans la liste de sélection car elle n'est contenue ni dans une fonction d'agrégat ni dans la clause GROUP BY. – jrara
Et l'instruction d'insertion ne semble rien insérer dans cet exemple. – jrara