Avatar billede nemlig Professor
20. september 2023 - 22:37 Der er 3 kommentarer og
1 løsning

Tjek om værdi i tabel1 findes i tabel2

Hejsa.
Jeg har en tabel-1 med 300 poster, hvor jeg udtrækker en strengværdi (feltnavn = `xid`) for hver post. `xid`-værdien er unik.
Jeg har en tabel-2 med 20.000 poster, og som også har et felt (feltnavn = `aftale_xid`) og som indeholder én af de 300 strengværdier fra `xid`-feltet i tabel-1. Her kan der være flere poster, som har samme værdi i `aftale_xid`.

Jeg vil gerne tjekke om der er nogle poster i tabel-2, som ikke har en af de 300 strengværdier fra tabel-1. Disse poster er nemlig overflødige og skal slettes.

Jeg kan godt finde ud af at udtrække de 20.000 poster. Så kan jeg loope dette array og lave et opslag i tabel-1 og tjekke om værdien findes. Og hvis ikke, så slettes posten. Men det giver 20.000 opslag, og det tror jeg vil presse SQL-serveren.
Nogen der kan komme med lidt input til, hvordan det kan løses mere effektivt i MySQL.
Jeg benytter PHP.
Avatar billede arne_v Ekspert
21. september 2023 - 00:27 #1
SELECT * FROM tabel2 WHERE aftale_xid NOT IN (SELECT xid FROM tabel1)

og hvis du er tilfreds med resultatet:

DELETE FROM tabel2 WHERE aftale_xid NOT IN (SELECT xid FROM tabel1)
Avatar billede nemlig Professor
21. september 2023 - 20:21 #2
Jeg skal vist nok i gang med at dyrke MySQL - det er en ret effektiv kode, du har foreslået. 20.000 poster tjekkes, og 912 rækker slettes - alt sammen sker på under 1 sek. 
Ret vildt hvad god kode kan gøre :).

Tusinde tak for hjælpen.
Avatar billede arne_v Ekspert
21. september 2023 - 20:40 #3
Bemærk at ovenstående SQL er standard SQL ikke MySQL specifik SQL.

Men ja det er altid godt at kunne noget SQL. :-)
Avatar billede nemlig Professor
21. september 2023 - 20:59 #4
#3 Tjek :).
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester