Comment supprimer plusieurs lignes dans SQL où id = (x à y)
j'essaie d'exécuter une requête SQL pour supprimer des lignes avec des id 163 à 265 dans une table
j'ai essayé ceci pour supprimer moins de nombre de lignes
DELETE FROM `table` WHERE id IN (264, 265)
Mais quand il s'agit de supprimer 100 de lignes à la fois, Est-il une requête similaire à la méthode ci-dessus J'essaie aussi d'utiliser ce genre de requête mais je n'ai pas réussi à l'exécuter
DELETE FROM `table` WHERE id IN (SELECT * FROM table WHERE id = )
s'il vous Plaît dites-moi la requête à faire de l'action ci-dessus...
5 réponses
si vous devez supprimer basé sur une liste, vous pouvez utiliser IN
:
delete from your_table
where id in (value1, value2, ...);
si vous devez supprimer basé sur le résultat d'une requête, vous pouvez également utiliser IN
:
delete from your_table
where id in (select aColumn from ...);
(notez que le sous-article ne doit retourner qu'une colonne)
si vous devez supprimer basé sur une gamme de valeurs, soit vous utilisez BETWEEN
ou vous utilisez inégalités:
delete from your_table
where id between bottom_value and top_value;
ou
delete from your_table
where id >= a_value and id <= another_value;
vous pouvez utiliser BETWEEN
:
DELETE FROM table
where id between 163 and 265
s'il vous Plaît essayez ce qui suit:
DELETE FROM `table` WHERE id >=163 and id<= 265
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
Obtenir la valeur de la chaîne de supprimer
<RecordList>
<ID>1</ID>
<ID>2</ID>
</RecordList>