テーブル内の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 ...);
(サブクエリは1つのカラムのみを返さなければならないことに注意)
値の範囲に基づいて削除する必要がある場合は、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;
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
文字列の値を取得する delete
<RecordList>
<ID>1</ID>
<ID>2</ID>
</RecordList>