Permalänk
Medlem

SQL Delete only some

Jag har ett antal rader i en tabell (låt oss säga 10), och utifrån ändringar användaren gör kan dessa förbli 10 eller öka/minska. Det de här 10 raderna har gemensamt är ett bokningsID.

Mitt fundering är om jag kan radera x antal av dessa rader direkt genom SQL (baserat på bokningsID) eller om jag måste läsa ut de jag vill spara och sedan radera alla, bara för att lägga in de som ska sparas i tabellen igen.

Eller finns det bättre logik för att lösa mitt problem?

Permalänk
Medlem

Du kan ju nästla SQL-satser..?
Vet inte om jag förstår frågan rätt..

Sorterar du dom kan du ta bort TOP 5 eller nåt sen.

DELETE TOP 5 FROM tabell
etc.

Visa signatur

WS: Asus P8Z77-I Deluxe mITX | Intel 3770K@4.6 | NH-U12P | Asus 780 GTX | Corsair 2x8GB 1600Mhz CL9 | Samsung 840 512GB | Ubuntu 16.04.3 x86_64 | Corsair AX750 | 2x Dell U2412M | Puppe.se | NAS: i7 860, 16GB DDR3, GA-P55M-UD4, FD Define R3, 8x2TB Samsung F4EG, Serveraid M1015, EVGA 750W G2 PSU, FreeBSD x64

Permalänk
Medlem

Hmm, jag har aldrig nästlat sql-satser, men top 5 låter helt rätt. Måste kolla upp det!

Permalänk
Medlem

DELETE * FROM (SELECT * FROM tabell WHERE bokningsid = 'xx')

Omständigt exempel, men principen är densamma.

DELETE * FROM tabell WHERE bokningsid = 'xx'

.. utför samma sak, med mindre jobb..

Visa signatur

WS: Asus P8Z77-I Deluxe mITX | Intel 3770K@4.6 | NH-U12P | Asus 780 GTX | Corsair 2x8GB 1600Mhz CL9 | Samsung 840 512GB | Ubuntu 16.04.3 x86_64 | Corsair AX750 | 2x Dell U2412M | Puppe.se | NAS: i7 860, 16GB DDR3, GA-P55M-UD4, FD Define R3, 8x2TB Samsung F4EG, Serveraid M1015, EVGA 750W G2 PSU, FreeBSD x64

Permalänk
Medlem

Tack för hjälpen! Den här lilla raden löste mina problem:

DELETE * FROM (SELECT TOP xx Resultat.ResultatID, Resultat.BokningsID FROM Resultat WHERE Resultat.BokningsID=xx ORDER BY ResultatID DESC);