Slik sletter du flere rader i SQL der id = (x til y)

Jeg prøver å kjøre en SQL-spørring for å slette rader med id 163 til 265 i en tabell.

Jeg prøvde dette for å slette et mindre antall rader

    DELETE FROM `table` WHERE id IN (264, 265)

Men når det gjelder å slette 100' s av rader om gangen, er det noen spørsmål som ligner på metoden ovenfor Jeg prøver også å bruke denne typen spørsmål, men klarte ikke å utføre det

    DELETE FROM `table` WHERE id IN (SELECT * FROM table WHERE id = )

Fortell meg spørringen for å gjøre handlingen ovenfor ...

Hvis du trenger å slette basert på en liste, kan du bruke IN:

DELETE FROM your_table
WHERE id IN (value1, value2, ...);

Hvis du trenger å slette basert på resultatet av en spørring, kan du også bruke IN:

DELETE FROM your_table
WHERE id IN (select aColumn from ...);

(Legg merke til at underspørringen bare må returnere én kolonne).

Hvis du trenger å slette basert på et verdiområde, bruker du enten BETWEEN eller ulikheter:

DELETE FROM your_table
WHERE id BETWEEN bottom_value AND top_value;

eller


DELETE FROM your_table
WHERE id >= a_value AND id 
Kommentarer (4)

Du kan bruke BETWEEN:

DELETE FROM table
where id between 163 and 265
Kommentarer (0)
CREATE PROC [dbo].[sp_DELETE_MULTI_ROW]       
@CODE XML
,@ERRFLAG  CHAR(1) = '0' OUTPUT    

AS        

SET NOCOUNT ON  
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED  

DELETE tb_SampleTest
    WHERE 
        CODE IN(
            SELECT Item.value('.', 'VARCHAR(20)')
            FROM  @CODE.nodes('RecordList/ID') AS x(Item)
            )

IF @@ROWCOUNT = 0
    SET @ERRFLAG = 200

SET NOCOUNT OFF

Get string value delete


    1
    2
Kommentarer (0)