In addition to the comments and the other solution. It's not been made clear why it is "better not to". You've also tagged this C# which led to solution 1, but this is something you could do at your database level. I will have to assume MSSQL for this for now and I used this sample demo data
create table #a (id int, datum varchar(10));
insert into #a (id, datum) values
(1,'item 1'),
(2,'item 2');
create table #b (id int identity(1,1), datum varchar(10));
insert into #b (datum) values ('A'),('B'),('C'),('D');
You are probably using an INNER JOIN to filter your data in some way.
Firstly - Delete cannot be done. If you try something like
DELETE FROM #a
INNER JOIN #b on #a.id = #b.id
you will get a syntax error "Incorrect syntax near the keyword 'INNER'."
Read - you already know how to do this
SELECT #a.id, #a.datum, #b.datum
FROM #a
INNER JOIN #b on #a.id = #b.id;
Create - you could do something like this
INSERT INTO #a
SELECT #b.*
FROM #a
INNER JOIN #b on #a.id = #b.id;
BUT you will just end up with duplicates of the rows that are already in #a.
Most people would use a join here to insert rows that are on table #b but NOT on table #a e.g.
INSERT INTO #a
SELECT #b.id, #b.datum
FROM #b
LEFT OUTER JOIN #a on #a.id = #b.id
WHERE #a.id IS NULL;
Finally UPDATE, could look something like this
UPDATE #b
SET datum = #a.datum
FROM #a
INNER JOIN #b on #a.id = #b.id
although I have come across instances where this would not work unless you used a table alias e.g.
UPDATE b
SET datum = a.datum
FROM #a as a
INNER JOIN #b as b on a.id = b.id