Estou a tentar executar uma consulta SQL para apagar linhas com id's 163 a 265 numa tabela
Tentei isto para apagar menos filas
DELETE FROM `table` WHERE id IN (264, 265)
Mas quando se trata de apagar 100's de linhas de cada vez, Existe alguma consulta semelhante ao método acima Também estou a tentar usar este tipo de consulta mas não a executei
DELETE FROM `table` WHERE id IN (SELECT * FROM table WHERE id = )
Por favor, digam-me a consulta para fazer a acção acima...
Se precisar de apagar com base numa lista, pode utilizar o IN
:
DELETE FROM your_table
WHERE id IN (value1, value2, ...);
Se precisar de apagar com base no resultado de uma consulta, também pode utilizar o IN
:
DELETE FROM your_table
WHERE id IN (select aColumn from ...);
(Note que a subconsulta deve devolver apenas uma coluna)
Se precisar de apagar com base numa gama de valores, ou utiliza "ENTREJUNTOS" ou utiliza desigualdades:
DELETE FROM your_table
WHERE id BETWEEN bottom_value AND top_value;
ou
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
Obter valor de string apagar
<RecordList>
<ID>1</ID>
<ID>2</ID>
</RecordList>