DELETE (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW) Warehouse en microsoft Fabric SQL Database en Microsoft Fabric
Quita una o varias filas de una tabla o vista de SQL Server.
Convenciones de sintaxis de Transact-SQL
Sintaxis
-- Syntax for SQL Server and Azure SQL Database
[ WITH <common_table_expression> [ ,...n ] ]
DELETE
[ TOP ( expression ) [ PERCENT ] ]
[ FROM ]
{ { table_alias
| <object>
| rowset_function_limited
[ WITH ( table_hint_limited [ ...n ] ) ] }
| @table_variable
}
[ <OUTPUT Clause> ]
[ FROM table_source [ ,...n ] ]
[ WHERE { <search_condition>
| { [ CURRENT OF
{ { [ GLOBAL ] cursor_name }
| cursor_variable_name
}
]
}
}
]
[ OPTION ( <Query Hint> [ ,...n ] ) ]
[; ]
<object> ::=
{
[ server_name.database_name.schema_name.
| database_name. [ schema_name ] .
| schema_name.
]
table_or_view_name
}
-- Syntax for Azure Synapse Analytics and Microsoft Fabric
[ WITH <common_table_expression> [ ,...n ] ]
DELETE [database_name . [ schema ] . | schema. ] table_name
FROM [database_name . [ schema ] . | schema. ] table_name
JOIN {<join_table_source>}[ ,...n ]
ON <join_condition>
[ WHERE <search_condition> ]
[ OPTION ( <query_options> [ ,...n ] ) ]
[; ]
<join_table_source> ::=
{
[ database_name . [ schema_name ] . | schema_name . ] table_or_view_name [ AS ] table_or_view_alias
[ <tablesample_clause>]
| derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ]
}
-- Syntax for Parallel Data Warehouse
DELETE
[ FROM [database_name . [ schema ] . | schema. ] table_name ]
[ WHERE <search_condition> ]
[ OPTION ( <query_options> [ ,...n ] ) ]
[; ]
Argumentos
WITH <common_table_expression>
Especifica el conjunto de resultados de nombre temporal, también conocido como expresión de tabla común, definido dentro del ámbito de la instrucción DELETE. El conjunto de resultados se deriva de una instrucción SELECT.
Las expresiones de tabla comunes también se pueden utilizar con las instrucciones SELECT, INSERT, UPDATE y CREATE VIEW. Para más información, consulte WITH common_table_expression (Transact-SQL).
TOP (expression) [ PERCENT ]
Especifica el número o el porcentaje de filas aleatorias que se van a eliminar. expression puede ser un número o un porcentaje de las filas. Las filas a las que se hace referencia en la expresión TOP utilizada con INSERT, UPDATE o DELETE no se ordenan. Para obtener más información, vea TOP (Transact-SQL).
FROM
Palabra clave opcional que se puede usar entre la palabra clave DELETE y el destino table_or_view_name o rowset_function_limited.
table_alias
Alias especificado en la cláusula FROM table_source que representa la tabla o vista de la que se van a eliminar las filas.
server_name
Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
Nombre del servidor (un nombre de servidor vinculado o la función OPENDATASOURCE como nombre de servidor) en el que se encuentra la tabla o la vista. Si se especifica server_name, se requiere database_name y schema_name.
database_name
El nombre de la base de datos.
schema_name
Nombre del esquema al que pertenece la tabla o la vista.
table_or_view_name
Nombre de la tabla o vista cuyas filas se van a quitar.
En este ámbito, se puede utilizar una variable de tabla como origen de tabla de una instrucción DELETE.
La vista a la que hace referencia table_or_view_name debe poderse actualizar y debe hacer referencia exactamente a una tabla base de la cláusula FROM de la definición de vista. Para obtener más información sobre las vistas actualizables, consulte CREATE VIEW (Transact-SQL).
rowset_function_limited
Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
Función OPENQUERY u OPENROWSET, dependiendo del proveedor.
WITH (<table_hint_limited> [... n] )
Especifica una o varias sugerencias de tabla que están permitidas en una tabla de destino. La palabra clave WITH y los paréntesis son obligatorios. No se permiten NOLOCK ni READUNCOMMITTED. Para obtener más información sobre las sugerencias de tabla, consulte Sugerencias de tabla (Transact-SQL).
<OUTPUT_Clause>
Devuelve filas eliminadas, o expresiones basadas en ellas, como parte de la operación DELETE. La cláusula OUTPUT no se admite en instrucciones DML dirigidas a tablas o vistas remotas. Para obtener más información sobre los argumentos y el comportamiento de esta cláusula, consulte Cláusula OUTPUT (Transact-SQL).
FROM table_source
Especifica una cláusula FROM adicional. Esta extensión de Transact-SQL para DELETE permite especificar datos de <table_source> y eliminar las filas correspondientes de la tabla en la primera cláusula FROM.
Se puede utilizar esta extensión, que especifica una combinación, en lugar de una subconsulta en la cláusula WHERE para identificar las filas que se van a quitar.
Para obtener más información, consulte FROM (Transact-SQL).
WHERE
Especifica las condiciones utilizadas para limitar el número de filas que se van a eliminar. Si no se proporciona una cláusula WHERE, DELETE quita todas las filas de la tabla.
Hay dos formas de operaciones de eliminación, que se basan en las condiciones que se especifiquen en la cláusula WHERE:
Las eliminaciones por búsqueda especifican una condición de búsqueda que califica las filas que se van a eliminar. Por ejemplo, WHERE column_name = value.
Las eliminaciones por posición utilizan la cláusula CURRENT OF para especificar un cursor. La operación de eliminación se produce en la posición actual del cursor. Este método puede ser más preciso que una instrucción DELETE por búsqueda que utilice una cláusula WHERE search_condition para calificar las filas que se van a eliminar. Una instrucción DELETE por búsqueda elimina varias filas si la condición de búsqueda no identifica exclusivamente una única fila.
<search_condition>
Especifica las condiciones restrictivas de las filas que se van a eliminar. No hay límite en el número de predicados que se pueden incluir en una condición de búsqueda. Para obtener más información, consulte Condición de búsqueda (Transact-SQL).
CURRENT OF
Especifica que la instrucción DELETE se ejecutará en la posición actual del cursor especificado.
GLOBAL
Especifica que cursor_name hace referencia a un cursor global.
cursor_name
Es el nombre del cursor abierto desde el que se realiza la captura. Si hay un cursor global y otro local con el nombre cursor_name, este argumento hace referencia al cursor global si se especifica GLOBAL; de lo contrario, hace referencia al cursor local. El cursor debe permitir actualizaciones.
cursor_variable_name
Nombre de una variable de cursor. La variable de cursor debe hacer referencia a un cursor que permita realizar actualizaciones.
OPTION (<query_hint> [ ,... n] )
Palabras clave que indican qué sugerencias del optimizador se emplean para personalizar la forma en que el Motor de base de datos procesa la instrucción. Para obtener más información, consulte Sugerencias de consulta (Transact-SQL).
Prácticas recomendadas
Para eliminar todas las filas de una tabla, use TRUNCATE TABLE
. TRUNCATE TABLE
es más rápido que DELETE y utiliza menos recursos de los registros de transacciones y de sistema. TRUNCATE TABLE
tiene restricciones; por ejemplo, la tabla no puede participar en la replicación. Para obtener más información, consulte TRUNCATE TABLE (Transact-SQL).
Use la función @@ROWCOUNT
para devolver el número de filas eliminadas a la aplicación cliente. Para obtener más información, consulte @@ROWCOUNT(Transact-SQL).
Tratamiento de errores
Puede implementar el control de errores de la instrucción DELETE especificando la instrucción en una construcción TRY...CATCH
.
La instrucción DELETE
puede tener un error si infringe un desencadenador o intenta quitar una fila a la que hacen referencia datos de otra tabla con una restricción FOREIGN KEY
. Si la instrucción DELETE
quita varias filas y cualquiera de las filas eliminadas infringe un desencadenador o restricción, se cancela la instrucción, se devuelve un error y no se elimina ninguna fila.
Cuando una instrucción DELETE encuentra un error aritmético (desbordamiento, división entre cero o error de dominio) al evaluar una expresión, el Motor de base de datos trata ese error como si SET ARITHABORT
fuese ON. Se cancela el resto del proceso por lotes y se devuelve un mensaje de error.
Interoperabilidad
Es posible utilizar DELETE en el cuerpo de una función definida por el usuario si el objeto que se va a modificar es una variable de tabla.
Al eliminar una fila que contiene una columna FILESTREAM, también elimina los archivos del sistema de archivos subyacentes. El recolector de elementos no utilizados de FILESTREAM quita los archivos subyacentes. Para obtener más información, consulte Obtener acceso a datos FILESTREAM con Transact-SQL.
No se puede especificar la cláusula FROM en una instrucción DELETE que haga referencia, directa o indirectamente, a una vista que tenga definido un desencadenador INSTEAD OF
. Para obtener más información sobre los desencadenadores INSTEAD OF, consulte CREATE TRIGGER (Transact-SQL).
Actualmente, la cláusula FROM no se puede especificar en las instrucciones DELETE en el almacenamiento de Microsoft Fabric.
Limitaciones y restricciones
Cuando se usa TOP
con DELETE
, las filas a las que hace referencia no están organizadas de ninguna manera y la cláusula ORDER BY
no se puede especificar directamente en esta instrucción. Si necesita utilizar TOP para eliminar filas por un orden cronológico significativo, debe usar TOP
junto con una cláusula ORDER BY
en una instrucción de subselección. Vea la sección Ejemplos que aparece más adelante en este tema.
TOP
no se puede usar en una instrucción DELETE
con vistas divididas en particiones.
Comportamiento del bloqueo
De forma predeterminada, una instrucción DELETE
siempre adquiere un bloqueo exclusivo de intención (IX) en el objeto de tabla y páginas que modifica, un bloqueo exclusivo (X) en las filas que modifica y los mantiene hasta que se complete la transacción.
Al usar un bloqueo con intención exclusiva (IX), el resto de las transacciones no pueden modificar el mismo conjunto de datos; las operaciones de lectura solo se pueden realizar si se usa la sugerencia NOLOCK o el nivel de aislamiento de lectura no confirmada. Puede especificar sugerencias de tabla para invalidar este comportamiento predeterminado durante la ejecución de la instrucción DELETE especificando otro método de bloqueo, sin embargo se recomienda que solo los desarrolladores y administradores de bases de datos experimentados usen las sugerencias y únicamente como último recurso. Para obtener más información, vea Sugerencias de tabla (Transact-SQL).
Cuando se eliminan filas de un montón, Motor de base de datos puede usar bloqueo de filas o páginas para la operación. Como consecuencia, las páginas que han quedado vacías por la operación de eliminación permanecen asignadas al montón. Si no se cancela la asignación de las páginas vacías, otros objetos de la base de datos no pueden volver a utilizar el espacio asociado.
Para eliminar las filas de un montón y cancelar la asignación de las páginas, use uno de los métodos siguientes.
Especifique la sugerencia TABLOCK en la instrucción DELETE. Si se utiliza la sugerencia TABLOCK, la operación de eliminación aplica un bloqueo IX al objeto, en lugar de un bloqueo de fila o de página. Esto permite cancelar la asignación de las páginas. Para obtener más información sobre las sugerencias de TABLOCK, consulte Sugerencias de tabla (Transact-SQL).
Use
TRUNCATE TABLE
si se van a eliminar todas las filas de la tabla.Cree un índice clúster en el montón antes de eliminar las filas. Puede quitar el índice clúster tras eliminar las filas. Este método requiere más tiempo que los métodos anteriores y utiliza más recursos temporales.
Nota
Las páginas vacías se pueden quitar de un montón en cualquier momento con la instrucción ALTER TABLE <table_name> REBUILD
.
Comportamiento del registro
La instrucción DELETE siempre está registrada totalmente.
Seguridad
Permisos
Se requieren permisos DELETE
en la tabla de destino. También se requieren permisos SELECT
si la instrucción contiene una cláusula WHERE.
Los permisos DELETE se adjudican de forma predeterminada a los miembros del rol fijo de servidor sysadmin
, a los roles fijos de base de datos db_owner
y db_datawriter
, y al propietario de la tabla. Los miembros de los roles sysadmin
, db_owner
y db_securityadmin
y el propietario de la tabla pueden transferir permisos a otros usuarios.
Ejemplos
Category | Elementos de sintaxis ofrecidos |
---|---|
Sintaxis básica | Delete |
Limitar las filas eliminadas | WHERE * FROM * cursor * |
Eliminar filas de una tabla remota | Servidor vinculado * función de conjunto de filas OPENQUERY * función de conjunto de filas OPENDATASOURCE |
Capturar los resultados de la instrucción DELETE | Cláusula OUTPUT |
Sintaxis básica
En los ejemplos de esta sección se muestra la funcionalidad básica de la instrucción DELETE usando la sintaxis mínima requerida.
A. Utilizar DELETE sin la cláusula WHERE
En el ejemplo siguiente se eliminan todas las filas de la tabla SalesPersonQuotaHistory
de la base de datos AdventureWorks2022 porque no se usa una cláusula WHERE para limitar el número de filas eliminadas.
DELETE FROM Sales.SalesPersonQuotaHistory;
GO
Limitar las filas eliminadas
En los ejemplos de esta sección se muestra cómo se limita el número de filas que se van a eliminar.
B. Usar la cláusula WHERE para eliminar un conjunto de filas
En el ejemplo siguiente se eliminan todas las filas de la tabla ProductCostHistory
de la base de datos AdventureWorks2022 en las que el valor de la columna StandardCost
es mayor que 1000.00
.
DELETE FROM Production.ProductCostHistory
WHERE StandardCost > 1000.00;
GO
En el siguiente ejemplo se muestra una cláusula WHERE más compleja. La cláusula WHERE define dos condiciones que deben cumplirse para determinar las filas que se van a eliminar. El valor de la columna StandardCost
debe estar comprendido entre 12.00
y 14.00
y el valor de la columna SellEndDate
debe ser NULL. En el ejemplo se imprime también el valor desde la función @@ROWCOUNT para devolver el número de filas eliminadas.
DELETE Production.ProductCostHistory
WHERE StandardCost BETWEEN 12.00 AND 14.00
AND EndDate IS NULL;
PRINT 'Number of rows deleted is ' + CAST(@@ROWCOUNT as char(3));
C. Usar un cursor para determinar la fila que se va a eliminar
En el ejemplo siguiente se elimina una sola fila de la tabla EmployeePayHistory
de la base de datos AdventureWorks2022 mediante un cursor denominado complex_cursor
. La operación de eliminación solo afecta a la única fila que se captura actualmente del cursor.
DECLARE complex_cursor CURSOR FOR
SELECT a.BusinessEntityID
FROM HumanResources.EmployeePayHistory AS a
WHERE RateChangeDate <>
(SELECT MAX(RateChangeDate)
FROM HumanResources.EmployeePayHistory AS b
WHERE a.BusinessEntityID = b.BusinessEntityID) ;
OPEN complex_cursor;
FETCH FROM complex_cursor;
DELETE FROM HumanResources.EmployeePayHistory
WHERE CURRENT OF complex_cursor;
CLOSE complex_cursor;
DEALLOCATE complex_cursor;
GO
D. Usar combinaciones y subconsultas en los datos de una tabla para eliminar filas de otra tabla
En los siguientes ejemplos se muestran dos maneras de eliminar filas de una tabla en función de los datos de otra tabla. En los dos ejemplos, se eliminan las filas de la tabla SalesPersonQuotaHistory
de la base de datos AdventureWorks2022 según las ventas del año hasta la fecha almacenadas en la tabla SalesPerson
. La primera instrucción DELETE
muestra la solución de subconsulta compatible con ISO, y la segunda instrucción DELETE
muestra la extensión de FROM de Transact-SQL para unir las dos tablas.
-- SQL-2003 Standard subquery
DELETE FROM Sales.SalesPersonQuotaHistory
WHERE BusinessEntityID IN
(SELECT BusinessEntityID
FROM Sales.SalesPerson
WHERE SalesYTD > 2500000.00);
GO
-- Transact-SQL extension
DELETE FROM Sales.SalesPersonQuotaHistory
FROM Sales.SalesPersonQuotaHistory AS spqh
INNER JOIN Sales.SalesPerson AS sp
ON spqh.BusinessEntityID = sp.BusinessEntityID
WHERE sp.SalesYTD > 2500000.00;
GO
-- No need to mention target table more than once.
DELETE spqh
FROM
Sales.SalesPersonQuotaHistory AS spqh
INNER JOIN Sales.SalesPerson AS sp
ON spqh.BusinessEntityID = sp.BusinessEntityID
WHERE sp.SalesYTD > 2500000.00;
E. Utilizar TOP para limitar el número de filas eliminadas
Cuando se usa una cláusula TOP (n) con DELETE, la operación de eliminación se realiza en una selección aleatoria de un número de filas n. En el ejemplo siguiente se eliminan 20
filas aleatorias de la tabla PurchaseOrderDetail
de la base de datos AdventureWorks2022 cuyas fechas de vencimiento sean anteriores al 1 de julio de 2006.
DELETE TOP (20)
FROM Purchasing.PurchaseOrderDetail
WHERE DueDate < '20020701';
GO
Si necesita utilizar TOP para eliminar filas por un orden cronológico significativo, debe utilizarla junto con ORDER BY en una instrucción de subselección. La siguiente consulta elimina de la tabla PurchaseOrderDetail
las 10 filas con las fechas de vencimiento más antiguas. Para garantizar que solo se eliminen 10 filas, la columna especificada en la instrucción de subselección (PurchaseOrderID
) es la clave principal de la tabla. El uso de una columna sin clave en la instrucción de subselección podría causar la eliminación de más de 10 filas si la columna especificada contiene valores duplicados.
DELETE FROM Purchasing.PurchaseOrderDetail
WHERE PurchaseOrderDetailID IN
(SELECT TOP 10 PurchaseOrderDetailID
FROM Purchasing.PurchaseOrderDetail
ORDER BY DueDate ASC);
GO
Eliminar filas de una tabla remota
En los ejemplos de esta sección se muestra cómo se eliminan filas de una tabla remota mediante un servidor vinculado o una función de conjunto de filas para hacer referencia a la tabla remota. Una tabla remota existe en un servidor o instancia diferente de SQL Server.
Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
F. Eliminar datos de una tabla remota usando un servidor vinculado
En el ejemplo siguiente se eliminan filas de una tabla remota. En el ejemplo primero se crea un vínculo al origen de datos remoto mediante sp_addlinkedserver. El nombre del servidor vinculado, MyLinkServer
, se especifica después como parte del nombre de objeto de cuatro partes con el formatoserver.catalog.schema.object.
USE master;
GO
-- Create a link to the remote data source.
-- Specify a valid server name for @datasrc as 'server_name' or 'server_name\instance_name'.
EXEC sp_addlinkedserver @server = N'MyLinkServer',
@srvproduct = N' ',
@provider = N'SQLNCLI',
@datasrc = N'server_name',
@catalog = N'AdventureWorks2022';
GO
-- Specify the remote data source using a four-part name
-- in the form linked_server.catalog.schema.object.
DELETE MyLinkServer.AdventureWorks2022.HumanResources.Department
WHERE DepartmentID > 16;
GO
G. Eliminar datos de una tabla remota con la función OPENQUERY
En el ejemplo siguiente se eliminan filas de una tabla remota especificando la función de conjunto de filas OPENQUERY. En este ejemplo se usa el nombre del servidor vinculado creado en el ejemplo anterior.
DELETE OPENQUERY (MyLinkServer, 'SELECT Name, GroupName
FROM AdventureWorks2022.HumanResources.Department
WHERE DepartmentID = 18');
GO
H. Eliminar datos de una tabla remota con una función OPENDATASOURCE
En el ejemplo siguiente se elimina una fila de una tabla remota especificando la función de conjunto de filas OPENDATASOURCE. Especifique un nombre de servidor válido para el origen de datos con el formato server_name o server_name\instance_name.
DELETE FROM OPENDATASOURCE('SQLNCLI',
'Data Source= <server_name>; Integrated Security=SSPI')
.AdventureWorks2022.HumanResources.Department
WHERE DepartmentID = 17;
Capturar los resultados de la instrucción DELETE
I. Usar DELETE con la cláusula OUTPUT
En el ejemplo siguiente se muestra cómo se guardan los resultados de una instrucción DELETE
en una variable de tabla en la base de datos AdventureWorks2022.
DELETE Sales.ShoppingCartItem
OUTPUT DELETED.*
WHERE ShoppingCartID = 20621;
--Verify the rows in the table matching the WHERE clause have been deleted.
SELECT COUNT(*) AS [Rows in Table]
FROM Sales.ShoppingCartItem
WHERE ShoppingCartID = 20621;
GO
J. Usar OUTPUT con <from_table_name> en una instrucción DELETE
En el ejemplo siguiente se eliminan las filas de la tabla ProductProductPhoto
de la base de datos AdventureWorks2022 según los criterios de búsqueda definidos en la cláusula FROM
de la instrucción DELETE
. La cláusula OUTPUT
devuelve columnas de la tabla que se elimina ( DELETED.ProductID
, DELETED.ProductPhotoID
) y de la tabla Product
. Esta información se utiliza en la cláusula FROM
para especificar las filas que se deben eliminar.
DECLARE @MyTableVar table (
ProductID int NOT NULL,
ProductName nvarchar(50)NOT NULL,
ProductModelID int NOT NULL,
PhotoID int NOT NULL);
DELETE Production.ProductProductPhoto
OUTPUT DELETED.ProductID,
p.Name,
p.ProductModelID,
DELETED.ProductPhotoID
INTO @MyTableVar
FROM Production.ProductProductPhoto AS ph
JOIN Production.Product as p
ON ph.ProductID = p.ProductID
WHERE p.ProductModelID BETWEEN 120 and 130;
--Display the results of the table variable.
SELECT ProductID, ProductName, ProductModelID, PhotoID
FROM @MyTableVar
ORDER BY ProductModelID;
GO
Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)
K. Eliminar todas las filas de una tabla
En el ejemplo siguiente se eliminan todas las filas de la tabla Table1
porque no se utiliza una cláusula WHERE para limitar el número de filas eliminadas.
DELETE FROM Table1;
L. Eliminar un conjunto de filas de una tabla
En el ejemplo siguiente se eliminan todas las filas de la tabla Table1
en las que el valor de la columna StandardCost
es superior a 1000,00.
DELETE FROM Table1
WHERE StandardCost > 1000.00;
M. Usar LABEL con una instrucción DELETE
En el ejemplo siguiente se usa una etiqueta con la instrucción DELETE.
DELETE FROM Table1
OPTION ( LABEL = N'label1' );
Hora Usar una etiqueta y una sugerencia de consulta con la instrucción DELETE
Esta consulta muestra la sintaxis básica para usar una sugerencia de combinación de consulta con la instrucción DELETE. Para más información sobre las sugerencias de combinación y cómo usar la cláusula OPTION, consulte Cláusula OPTION (Transact-SQL).
-- Uses AdventureWorks
DELETE FROM dbo.FactInternetSales
WHERE ProductKey IN (
SELECT T1.ProductKey FROM dbo.DimProduct T1
JOIN dbo.DimProductSubcategory T2
ON T1.ProductSubcategoryKey = T2.ProductSubcategoryKey
WHERE T2.EnglishProductSubcategoryName = 'Road Bikes' )
OPTION ( LABEL = N'CustomJoin', HASH JOIN ) ;
O. Eliminación con una cláusula WHERE
Esta consulta muestra cómo realizar una eliminación con una cláusula WHERE y no con una cláusula FROM.
DELETE tableA WHERE EXISTS (
SELECT TOP 1 1 FROM tableB tb WHERE tb.col1 = tableA.col1
)
P. Eliminación basada en el resultado de la unión con otra tabla
En este ejemplo se muestra cómo realizar una eliminación de una tabla en función del resultado de la combinación con otra tabla.
CREATE TABLE dbo.Table1
(ColA int NOT NULL, ColB decimal(10,3) NOT NULL);
GO
CREATE TABLE dbo.Table2
(ColA int PRIMARY KEY NOT NULL, ColB decimal(10,3) NOT NULL);
GO
INSERT INTO dbo.Table1 VALUES(1, 10.0), (1, 20.0);
INSERT INTO dbo.Table2 VALUES(1, 0.0);
GO
DELETE dbo.Table2
FROM dbo.Table2
INNER JOIN dbo.Table1
ON (dbo.Table2.ColA = dbo.Table1.ColA)
WHERE dbo.Table2.ColA = 1;
Consulte también
CREATE TRIGGER (Transact-SQL)
INSERT (Transact-SQL)
SELECT (Transact-SQL)
TRUNCATE TABLE (Transact-SQL)
UPDATE (Transact-SQL)
WITH common_table_expression (Transact-SQL)
@@ROWCOUNT (Transact-SQL)