Bir tablodaki 163 ila 265 id'li satırları silmek için bir SQL sorgusu çalıştırmaya çalışıyorum
Daha az sayıda satırı silmek için şunu denedim
DELETE FROM `table` WHERE id IN (264, 265)
Ancak bir seferde 100'lerce satırı silmek söz konusu olduğunda, yukarıdaki yönteme benzer herhangi bir sorgu var mı? Ben de bu tür bir sorgu kullanmaya çalışıyorum ancak çalıştırmayı başaramadım
DELETE FROM `table` WHERE id IN (SELECT * FROM table WHERE id = )
Lütfen bana yukarıdaki işlemi yapmak için sorguyu söyleyin ...
Bir listeye dayalı olarak silmeniz gerekiyorsa, IN
kullanabilirsiniz:
DELETE FROM your_table
WHERE id IN (value1, value2, ...);
Bir sorgunun sonucuna göre silmeniz gerekiyorsa, IN
de kullanabilirsiniz:
DELETE FROM your_table
WHERE id IN (select aColumn from ...);
(Alt sorgunun yalnızca bir sütun döndürmesi gerektiğine dikkat edin)
Bir değer aralığına göre silmeniz gerekiyorsa, ya BETWEEN
kullanırsınız ya da eşitsizlikler kullanırsınız:
DELETE FROM your_table
WHERE id BETWEEN bottom_value AND top_value;
veya
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
Dize değerini al sil
<RecordList>
<ID>1</ID>
<ID>2</ID>
</RecordList>