23. april 2003 - 14:45Der er
7 kommentarer og 1 løsning
delete
Jeg har 2 tabeller, USERS og LOG_LAST_VISITS de indeholder begge feltet username. Jeg vil gerne slette alle username's fra LOG_LAST_VISITS der ikke er i USERS. Er der en sqlsætning til det ??
Min Mysql version er 4.0 tror jeg ikke så jeg kan ikke bruge IN()
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Det kan desværre ikke lade sig gøre at benytte subselects (som IN jo er) i den version af MySQL.
Man kan dog lave et lille trick med først at finde de ønskede (vha. LEFT JOIN) poster, og bruge det til at generere nogle delete statements med som man efterfølgende kan køre. Det er ikke en køn løsning, men det virker.
SELECT CONCAT("DELETE FROM LOG_LAST_VISITS WHERE username='", l.username, "';) FROM LOG_LAST_VISITS l LEFT JOIN USERS u ON u.username=l.username WHERE u.username IS NULL
SELECT CONCAT("DELETE FROM LOG_LAST_VISITS WHERE username='", l.username, "';") FROM LOG_LAST_VISITS l LEFT JOIN USERS u ON u.username=l.username WHERE u.username IS NULL
(der manglede et par gåseøjne)
Scriptet er ikke afprøvet, men jeg har så sent som igår brugt samme teknik til at få ryddet op i nogle af mine egne databaser (glæder mig til at få MySQL med fremmednøgler!)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.