Published on

April 26, 2015

Usando a cláusula TOP no SQL Server

No SQL Server, a cláusula TOP é comumente usada para restringir o número de linhas retornadas por uma instrução SELECT. No entanto, a cláusula TOP também pode ser usada em conjunto com as instruções UPDATE, INSERT e DELETE para realizar operações específicas em um número limitado de linhas.

Atualizando o nível de estoque usando a instrução UPDATE

Vamos supor que temos uma tabela de nível de estoque que mantém a quantidade de itens em estoque para cada produto. Queremos atualizar o nível de estoque para produtos que têm uma quantidade menor que 15, aumentando a quantidade em 10. Além disso, queremos atualizar no máximo 2 linhas.


-- Linhas antes da atualização
SELECT * FROM StockLevel;

-- Atualizar StockLevel
UPDATE TOP (2) StockLevel 
SET Qty = Qty + 10
WHERE Qty < 15;

-- Linhas após a atualização
SELECT * FROM StockLevel;

Ao usar a cláusula TOP na instrução UPDATE, podemos garantir que apenas o número especificado de linhas seja atualizado. Neste exemplo, apenas as linhas com ProductId 1 e 2 terão suas quantidades aumentadas em 10.

Inserindo linhas com a cláusula TOP

A cláusula TOP também pode ser usada em uma instrução INSERT para inserir um número limitado de linhas em uma tabela. Por exemplo, se quisermos inserir as duas primeiras linhas da tabela StockLevel em uma nova tabela chamada ProductIdList, podemos usar o seguinte código:


-- Criar tabela para armazenar TOP(2)
CREATE TABLE ProductIdList (ProductId int, Qty int);

-- Inserir TOP(2)
INSERT TOP(2) INTO ProductIdList 
SELECT ProductID, Qty FROM StockLevel;

-- Verificar o que foi inserido
SELECT * FROM ProductIdList;

Neste caso, apenas as linhas com ProductId 1 e 2 serão inseridas na tabela ProductIdList.

Excluindo linhas com a cláusula TOP

Assim como na instrução INSERT, a cláusula TOP pode ser usada em uma instrução DELETE para excluir um número limitado de linhas de uma tabela. No entanto, é importante observar que quando a cláusula TOP é usada em uma instrução DELETE, as linhas são excluídas aleatoriamente.

Por exemplo, se quisermos excluir a primeira linha da tabela StockLevel, podemos usar o seguinte código:


BEGIN TRANSACTION;
SELECT * FROM StockLevel;
DELETE TOP(1) FROM StockLevel;
SELECT * FROM StockLevel;
ROLLBACK TRANSACTION;

Neste caso, a primeira linha na tabela StockLevel será excluída, independentemente do valor de sua quantidade.

Se quisermos excluir a linha com o valor de quantidade mais baixo, podemos usar uma subconsulta correlacionada com a cláusula TOP:


SET NOCOUNT ON;
DELETE FROM StockLevel 
WHERE ProductId IN (SELECT TOP(1) ProductId 
                    FROM StockLevel 
                    ORDER BY Qty);
SELECT * FROM StockLevel;

Ao usar a cláusula TOP na subconsulta, podemos identificar a linha com o valor de quantidade mais baixo e excluí-la da tabela StockLevel.

Conclusão

A cláusula TOP no SQL Server pode ser uma ferramenta útil ao trabalhar com as instruções UPDATE, INSERT e DELETE. Ela nos permite realizar operações em um número limitado de linhas, proporcionando mais controle sobre nossas tarefas de manipulação de dados. No entanto, é importante considerar cuidadosamente a colocação da cláusula TOP para garantir que as linhas desejadas sejam selecionadas ou afetadas.

Da próxima vez que você precisar realizar uma operação em um número específico de registros, considere usar a cláusula TOP para alcançar a lógica desejada.

Veja todos os artigos de Greg Larsen

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.