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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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