Ich versuche, eine SQL-Abfrage auszuführen, um Zeilen mit den IDs 163 bis 265 in einer Tabelle zu löschen
Ich habe versucht, weniger Zeilen zu löschen
DELETE FROM `table` WHERE id IN (264, 265)
Aber wenn es darum geht, Hunderte von Zeilen gleichzeitig zu löschen, gibt es eine Abfrage ähnlich der obigen Methode? Ich versuche auch, diese Art von Abfrage zu verwenden, konnte sie jedoch nicht ausführen
DELETE FROM `table` WHERE id IN (SELECT * FROM table WHERE id = )
Bitte teilen Sie mir die Abfrage mit, um die obige Aktion auszuführen ...
sql
sql-delete
Balu Zapps
quelle
quelle
Antworten:
Wenn Sie basierend auf einer Liste löschen müssen, können Sie Folgendes verwenden
IN
:DELETE FROM your_table WHERE id IN (value1, value2, ...);
Wenn Sie basierend auf dem Ergebnis einer Abfrage löschen müssen, können Sie auch Folgendes verwenden
IN
:DELETE FROM your_table WHERE id IN (select aColumn from ...);
(Beachten Sie, dass die Unterabfrage nur eine Spalte zurückgeben darf.)
Wenn Sie basierend auf einem Wertebereich löschen müssen, verwenden
BETWEEN
Sie entweder 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;
quelle
Sie können verwenden
BETWEEN
:DELETE FROM table where id between 163 and 265
quelle
Bitte versuchen Sie dies:
DELETE FROM `table` WHERE id >=163 and id<= 265
quelle
Delete Id from table where Id in (select id from table)
quelle
delete
Aussage istCREATE 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
String-Wert löschen lassen
quelle