Как удалить несколько строк в SQL, где id = (от x до y)
Я пытаюсь запустить SQL-запрос для удаления строк с идентификатором от 163 до 265 в таблице
Я попробовал это, чтобы удалить меньшее количество строк
DELETE FROM `table` WHERE id IN (264, 265)
Но когда дело доходит до 100 строк за раз, есть ли какой-либо запрос, похожий на описанный выше метод
Я также пытаюсь использовать этот вид запроса, но не смог выполнить его
DELETE FROM `table` WHERE id IN (SELECT * FROM table WHERE id = )
Скажите, пожалуйста, запрос выполнить вышеуказанное действие...
Ответы
Ответ 1
Если вам нужно удалить на основе списка, вы можете использовать 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;
Ответ 2
Вы можете использовать BETWEEN
:
DELETE FROM table
where id between 163 and 265
Ответ 3
Пожалуйста, попробуйте следующее:
DELETE FROM `table` WHERE id >=163 and id<= 265
Ответ 4
Delete Id from table where Id in (select id from table)
Ответ 5
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>