[sql] id = (x에서 y) 인 SQL에서 여러 행을 삭제하는 방법

테이블에서 ID가 163-265 인 행을 삭제하기 위해 SQL 쿼리를 실행하려고합니다.

나는 더 적은 수의 행을 삭제하려고 시도했습니다.

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

그러나 한 번에 100 개의 행을 삭제할 때 위의 방법과 비슷한 쿼리가 있습니까? 이런 종류의 쿼리를 사용하려고했지만 실행하지 못했습니다.

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

위의 작업을 수행하기위한 쿼리를 알려주십시오.



답변

목록을 기반으로 삭제해야하는 경우 다음을 사용할 수 있습니다 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;


답변

다음을 사용할 수 있습니다 BETWEEN.

DELETE FROM table
where id between 163 and 265


답변

이것을 시도하십시오 :

DELETE FROM `table` WHERE id >=163 and id<= 265


답변

Delete Id from table where Id in (select id from table)


답변

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>


답변