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 <= another_value;
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
<RecordList>
<ID>1</ID>
<ID>2</ID>
</RecordList>