Ich versuche, eine SQL-Abfrage auszuführen, um Zeilen mit id's 163 bis 265 in einer Tabelle zu löschen
Ich habe Folgendes versucht, um weniger Zeilen zu löschen
DELETE FROM `table` WHERE id IN (264, 265)
Aber wenn es darum geht, 100 Zeilen auf einmal zu löschen, gibt es eine Abfrage, die der obigen Methode ähnlich ist. Ich versuche auch, diese Art von Abfrage zu verwenden, kann sie aber nicht ausführen
DELETE FROM `table` WHERE id IN (SELECT * FROM table WHERE id = )
Bitte sagen Sie mir die Abfrage, um die obige Aktion auszuführen...
Wenn Sie anhand einer Liste löschen müssen, können Sie "IN" verwenden:
DELETE FROM your_table
WHERE id IN (value1, value2, ...);
Wenn Sie auf der Grundlage des Ergebnisses einer Abfrage löschen müssen, können Sie auch IN
verwenden:
DELETE FROM your_table
WHERE id IN (select aColumn from ...);
(Beachten Sie, dass die Subquery nur eine Spalte zurückgeben darf)
Wenn Sie auf der Grundlage eines Wertebereichs löschen müssen, verwenden Sie entweder BETWEEN
oder Sie verwenden Ungleichungen:
DELETE FROM your_table
WHERE id BETWEEN bottom_value AND top_value;
oder
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
Stringwert holen löschen
<RecordList>
<ID>1</ID>
<ID>2</ID>
</RecordList>