Eliminazione record con delete sql

giovedì 11 settembre 2008 - 17.55

trinity Profilo | Guru

salve ragazzi,
ho la seguente tabella:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

supponiamo l'inserimento di questi record:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

pertanto facendo una select successiva avremo:

select * from archivio_mow_new output: 1 - 1 - 1000 - 60038 - Rossi mario 2 - 1 - 1000 - 60038 - Rossi franco 3 - 1 - 1000 - 60038 - Rossi diego 4 - 1 - 1000 - 60038 - Rossi lucio 5 - 1 - 1000 - 60038 - Rossi fabio

può capitare il caso che devo eliminare 2 dei 5 record, indipendentemente dal nominativo, pertanto dovrei eseguire una delete con una specie di limit ossia dire che dei 5 record bisogna eliminarli solo 2.
Da vbnet potrei eseguire anche un ciclo for..next ed eseguire la delete per il numero di volet che mi serve, ma come faccio a dire con sql che deve solo eliminare semmai un record alla volta, sapendo che ho a disposizione non ho la colonna IdDb, ma solamente progschedina,codalbergo,codcomalbergo?

Ciao e grazie


Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

lbenaglia Profilo | Guru

>può capitare il caso che devo eliminare 2 dei 5 record, indipendentemente
>dal nominativo, pertanto dovrei eseguire una delete con una specie
>di limit ossia dire che dei 5 record bisogna eliminarli solo
>2.

Faccio fatica ad immaginare di dover eliminare due righe "a casaccio" da una tabella, ma se è questo che ti serve puoi specificare la clausola TOP() nel comando di DELETE:

USE tempdb; CREATE TABLE dbo.Archivio_mov_new( IdDb bigint IDENTITY(1,1) NOT NULL, progschedina int NULL, codalbergo int NULL, codcomalbergo int NULL, Nominativo varchar(15) NULL, CONSTRAINT PK_Archivio_mov_new PRIMARY KEY(IdDb) ); INSERT dbo.Archivio_mov_new VALUES(1, 1000, 60038, 'Rossi mario'); INSERT dbo.Archivio_mov_new VALUES(1, 1000, 60038, 'Rossi franco'); INSERT dbo.Archivio_mov_new VALUES(1, 1000, 60038, 'Rossi diego'); INSERT dbo.Archivio_mov_new VALUES(1, 1000, 60038, 'Rossi lucio'); INSERT dbo.Archivio_mov_new VALUES(1, 1000, 60038, 'Rossi fabio'); SELECT * FROM dbo.Archivio_mov_new; /* Output: IdDb progschedina codalbergo codcomalbergo Nominativo -------------------- ------------ ----------- ------------- --------------- 1 1 1000 60038 Rossi mario 2 1 1000 60038 Rossi franco 3 1 1000 60038 Rossi diego 4 1 1000 60038 Rossi lucio 5 1 1000 60038 Rossi fabio (5 row(s) affected) */ DELETE TOP(2) dbo.Archivio_mov_new; SELECT * FROM dbo.Archivio_mov_new; /* Output: IdDb progschedina codalbergo codcomalbergo Nominativo -------------------- ------------ ----------- ------------- --------------- 3 1 1000 60038 Rossi diego 4 1 1000 60038 Rossi lucio 5 1 1000 60038 Rossi fabio (3 row(s) affected) */ DROP TABLE dbo.Archivio_mov_new;

>Ciao e grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

Grazie mille, ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5