You are not logged in.

  • Login

Stephanj

Unregistered

1

Friday, September 23rd 2011, 11:34am

SQL abfrage löscht alle daten obwohl nur top9 ausgewählt.

Hallo ich hab da ein kleines anliegen...



Leider kann man sich bei euch nicht registrieren da versuche ich es auf diesem wege...



in meiner sql abfrage möchte ich nur die top9 aus einer bank löschen und nur die die auch in zone a sind... leider löscht er mir alles egal in welcher zeone....



hier der code:

Source code

1
2
3
4
5
6
DELETE FROM allSequences
WHERE     EXISTS
                          (SELECT     TOP (9) Zone
                            FROM          allSequences AS allSequences_1
                            WHERE      (Zone = 'B')
                            ORDER BY Sequence DESC)




Was mache ich falsch???



Schonmal danke für die hilfe/bzw für den support...



MFG
Stephan

2

Friday, September 23rd 2011, 12:22pm

EXISTS liefert nur wahr oder falsch zurück. Und bei "DELETE (...) WHERE true" löscht er dann halt alle Einträge ;)

Stephanj

Unregistered

3

Friday, September 23rd 2011, 12:25pm

okay... ich hab jetzt noch das:

Source code

1
2
3
4
5
6
DELETE FROM allSequences 
WHERE (Zone IN 
(SELECT TOP (1) Zone 
FROM allSequences AS allSequences_1 
WHERE (Zone = 'B') 
ORDER BY Zone))




und das:

Source code

1
2
3
DELETE TOP (2) 
FROM allSequences 
WHERE (Zone = 'A') ORDER BY Sequence DESC




versucht aber alles brachte keinen erfolg... was mach ich nur falsch... ???

4

Friday, September 23rd 2011, 12:28pm

Probiers mal so:

SQL Code

1
2
3
4
DELETE FROM allSequences
    WHERE      (Zone = 'B')
    ORDER BY Sequence DESC
    LIMIT 9

Stephanj

Unregistered

5

Friday, September 23rd 2011, 12:34pm

Source code

1
Dabei kommt falscher syntax in der nähe von ORDER....


Auch im Netz find ich kein Beispiel wie man ein delete mit order by und Top ausführt...

Stephanj

Unregistered

6

Friday, September 23rd 2011, 12:40pm

Source code

1
2
3
4
5
6
DELETE FROM allSequences
FROM         (SELECT     TOP (1) ID, VIN, Zone, Sequence, BTimeStamp, PartNo
                       FROM          allSequences AS allSequences_1
                       WHERE      (Zone = 'A')
                       ORDER BY Sequence) AS allsequences_2 CROSS JOIN
                      allSequences




Auch das bringt keinen Erfolg... Das doch zum Mäuse melken...

7

Friday, September 23rd 2011, 1:11pm

was für ne Datenbank is das denn?

SStephanj

Unregistered

8

Friday, September 23rd 2011, 1:22pm

MS SQL Server

9

Friday, September 23rd 2011, 1:51pm

ah ok, damit kenn ich mich nicht aus... hab nur folgendes gefunden:

SQL Code

1
2
3
DELETE tbl_test1 WHERE ID IN(
 
SELECT TOP 100 ID FROM tbl_test1 ORDER BY id)

SStephanj

Unregistered

10

Friday, September 23rd 2011, 2:03pm

Danke trotzdem... das geht auch nicht... er löscht wieder alle a... und lässt b da... aber danke nochmal !

Stephanj

Unregistered

11

Friday, September 23rd 2011, 2:13pm

Ich habs ;)



Source code

1
2
3
4
5
6
DELETE TOP (2) 
FROM allSequences 
WHERE (Zone IN 
(SELECT TOP (200) 'B' AS Zone 
FROM allSequences AS allSequences_1 
ORDER BY Sequence DESC))




Man muss nur oben auch noch sagen das er nur 2 löschen soll... Macht ja auch sinn ;)))))

Social bookmarks