[sql] delete & inner join

Pagina: 1
Acties:

  • majornono
  • Registratie: Juni 2002
  • Laatst online: 04-04 23:16
Ik heb een aantal rijen die uit een tabel verwijderd moeten worden als een overeenkomstig record bestaat in een andere tabel. De betreffende data kan geselecteerd worden met de volgende query:
SQL:
1
2
3
4
5
select *
from s
inner join z
    on z.ID = s.ID
    and z.SessieNr = s.SessieNr


Is het mogelijk, en zo ja hoe, om deze records in 1 statement te verwijderen?

Problem Exists Between Chair And Keyboard


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
In T-SQL (SQL Server) is het mogelijk om bv. deze constructie op te zetten:

code:
1
2
3
DELETE to_delete_tabel
FROM ref_tabel WHERE to_delete_tabel.id = ref_tabel.id
AND ref_tabel.blaat = ???

https://fgheysels.github.io/


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

code:
1
2
3
4
5
6
7
delete from s
where exists 
(select 'dummy'
 from   z
 where  z.ID = s.ID
 and    z.SessieNr = s.SessieNr
)

Who is John Galt?


  • majornono
  • Registratie: Juni 2002
  • Laatst online: 04-04 23:16
whoami schreef op 23 december 2003 @ 11:15:
In T-SQL (SQL Server) is het mogelijk om bv. deze constructie op te zetten:

code:
1
2
3
DELETE to_delete_tabel
FROM ref_tabel WHERE to_delete_tabel.id = ref_tabel.id
AND ref_tabel.blaat = ???
Bedankt, daar had ik idd nog helemaal niet over nagedacht. Hoef eigenlijk ook nooit een delete met de hand te doen.

Nog een extra opmerking om de search uit te breiden:
op regel 1 kun je geen alias voor de tabel gebruiken om de link tussen de tabellen te regelen

Problem Exists Between Chair And Keyboard


Verwijderd

Aliassen kan wel:

code:
1
2
3
delete t1
from       table1 t1
inner join table2 t2 on t1.a = t2.a

[ Voor 12% gewijzigd door Verwijderd op 23-12-2003 16:01 ]