WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   behöver lite hjälp med en mysql stats (https://www.wn.se/forum/showthread.php?t=1054428)

naak2803 2012-08-06 13:03

behöver lite hjälp med en mysql stats
 
DELETE FROM Login WHERE NOT IN (SELECT * FROM Login ORDER BY timeOfLogin DESC LIMIT 3)

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN (SELECT * FROM Login ORDER BY timeOfLogin DESC LIMIT 3)' at line 1

det jag vill göra, är att radera alla poster som INTE finns med i
"SELECT * FROM Login ORDER BY timeOfLogin DESC LIMIT 3"

Timofey 2012-08-06 13:18

Tror du missade WHERE id, och prova med NOT EXISTS: http://stackoverflow.com/questions/1...xpected-result
Eventuellt måste du också skriva WHERE a.id = b.id enligt nedan.

Kod:

DELETE FROM login a WHERE id NOT EXISTS (
  SELECT b.id FROM login b
  WHERE a.id = b.id
  ORDER BY b.timeoflogin DESC LIMIT 3
)


coredev 2012-08-06 13:57

Citat:

Ursprungligen postat av naak2803 (Inlägg 20446695)
DELETE FROM Login WHERE NOT IN (SELECT * FROM Login ORDER BY timeOfLogin DESC LIMIT 3)

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN (SELECT * FROM Login ORDER BY timeOfLogin DESC LIMIT 3)' at line 1

det jag vill göra, är att radera alla poster som INTE finns med i
"SELECT * FROM Login ORDER BY timeOfLogin DESC LIMIT 3"

Det finns flera fel:
1) För att kunna köra denna typen av subquery så måste du specificera kolumnnamnet i subqueryn. Ex:
Kod:

SELECT * FROM tabell WHERE id NOT IN (SELECT tabell_id FROM tabell2)
2) Du joinar tabellen med sig själv, det skall du inte behöva. Följande skall räcka:
Kod:

DELETE FROM Login ORDER BY timeOfLogin DESC LIMIT 3
3) Att ta bort de tre senaste inloggningarna är konstigt, du borde se över din informationsmodell :-)

Timofey 2012-08-06 19:28

Citat:

Ursprungligen postat av coredev (Inlägg 20446702)
3) Att ta bort de tre senaste inloggningarna är konstigt, du borde se över din informationsmodell :-)

Han ville ju radera alla förutom de 3 sista.

coredev 2012-08-06 22:31

Citat:

Ursprungligen postat av Timofey (Inlägg 20446731)
Han ville ju radera alla förutom de 3 sista.

Haha ja där ser man :-)


Alla tider är GMT +2. Klockan är nu 07:21.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson