এসকিউএল যেখানে আইডি = (x থেকে y) একাধিক সারি মুছে ফেলবেন


86

আমি একটি টেবিলের আইডি এর 163 থেকে 265 দিয়ে সারিগুলি মুছতে একটি এসকিউএল কোয়েরি চালানোর চেষ্টা করছি

আমি কম সংখ্যক সারি মুছে ফেলার চেষ্টা করেছি

    DELETE FROM `table` WHERE id IN (264, 265)

তবে যখন এটি একবারে 100 টি সারি মুছে ফেলার কথা আসে, তখন কি উপরের পদ্ধতির মতো কোনও প্রশ্ন রয়েছে আমিও এই ধরণের ক্যোয়ারীটি ব্যবহার করার চেষ্টা করছি তবে এটি কার্যকর করতে ব্যর্থ হয়েছে

    DELETE FROM `table` WHERE id IN (SELECT * FROM table WHERE id = )

উপরের ক্রিয়াটি করার জন্য দয়া করে আমাকে জিজ্ঞাসাটি বলুন ...



এটি উপরোক্ত উল্লিখিত থেকে কোনও সদৃশ নয় ... অন্যটি হ'ল বিধি অনুসারে মুছে ফেলার সাথে সম্পর্কিত, এর মধ্যে প্রশ্নটি সম্ভাব্য অবিচ্ছিন্ন আইডি, আইডির একটি তালিকা মুছে ফেলা বোঝায় ..
মেরাক মেরে

উত্তর:


190

আপনার যদি কোনও তালিকার উপর ভিত্তি করে মুছতে হয় তবে আপনি ব্যবহার করতে পারেন IN:

DELETE FROM your_table
WHERE id IN (value1, value2, ...);

আপনার যদি কোনও প্রশ্নের ফলাফলের ভিত্তিতে মুছতে হয় তবে আপনি এটি ব্যবহার করতে পারেন IN:

DELETE FROM your_table
WHERE id IN (select aColumn from ...);

(লক্ষ্য করুন সাবকিউরিটি কেবল একটি কলাম ফেরত দিতে হবে)

আপনার যদি মানগুলির একটি ব্যাপ্তির উপর ভিত্তি করে মুছতে হয় তবে আপনি ব্যবহার করুন BETWEENবা আপনি অসমতা ব্যবহার করুন:

DELETE FROM your_table
WHERE id BETWEEN bottom_value AND top_value;

বা

DELETE FROM your_table
WHERE id >= a_value AND id <= another_value;

4
ধন্যবাদ! আমি আমার প্রয়োজনীয়তার সাথে সফলভাবে নির্বাহিত বেটউইন এবং এটি ব্যবহার করেছি।
বালু জ্যাপস

10
@ বালুয্যাপস যদি আপনি এই উত্তরটি দরকারী মনে করেন তবে তা গ্রহণ করুন;)
বারানকা

এ সম্পর্কিত একটি প্রশ্ন: আমার কাছে যৌগিক কী থাকলে কী হবে?
ময়ূর বেলদার

4
@ ময়ূরবেলদার: আপনার যদি নতুন প্রশ্ন থাকে তবে এটি একটি মন্তব্য হিসাবে নয়, প্রশ্ন হিসাবে পোস্ট করুন
বারানকা

21

আপনি ব্যবহার করতে পারেন BETWEEN:

DELETE FROM table
where id between 163 and 265



-6
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

স্ট্রিংয়ের মান মুছুন

<RecordList>
    <ID>1</ID>
    <ID>2</ID>
</RecordList>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.