Compartir a través de


Cláusula WHERE (Microsoft Access SQL)

Se aplica a: Access 2013 | Access 2016

Especifica a qué registros de las tablas enumeradas en la cláusula FROM afecta una instrucción SELECT, UPDATE o DELETE.

Sintaxis

SELECT fieldlist FROM tableexpression WHERE criteria

Una instrucción SELECT que contenga una cláusula WHERE consta de los siguientes elementos:

Parte Descripción
fieldlist Nombre del campo o campos que se recuperarán junto con los alias de nombre de campo, predicados de selección ALL, DISTINCT, DISTINCTROW o TOP) u otras opciones de la instrucción SELECT.
expresiónDeTabla Nombre de la tabla o tablas en las que se recuperan datos.
criteria Expresión que los registros deben cumplir para que sean incluidos en los resultados de la consulta.

Comentarios

El motor de base de datos de Access selecciona los registros que cumplen las condiciones enumeradas en la cláusula WHERE. Si no especifica una cláusula WHERE, la consulta devuelve todas las filas de la tabla. Si se especifican varias tablas en la consulta y no se ha incluido una cláusula WHERE o una cláusula JOIN, la consulta genera un producto cartesiano de las tablas.

WHERE es opcional, pero si se incluye, debe especificarse a continuación de FROM. Por ejemplo, puede seleccionar todos los empleados del departamento de ventas (WHERE Dept = 'Sales') o todos los clientes de entre 18 y 30 () o todos los clientes de entre 18 y 30 años (WHERE Age Between 18 And 30).

Si no usa una cláusula JOIN para realizar operaciones de combinación de SQL en varias tablas, el objeto Recordset resultante no será actualizable.

WHERE es similar a HAVING. La cláusula WHERE determina qué registros se seleccionan. De la misma manera, una vez que los registros están agrupado con GROUP BY, la cláusula HAVING determina qué registros se muestran.

Use la cláusula WHERE para eliminar los registros que no desea agrupar por una cláusula GROUP BY.

Use varias expresiones para determinar qué registros devuelve la instrucción SQL. Por ejemplo, la siguiente instrucción SQL selecciona todos los empleados cuyo salario sea mayor de 21.000 dólares:

SELECT LastName, Salary 
FROM Employees 
WHERE Salary > 21000;

Una cláusula WHERE puede contener hasta 40 expresiones vinculadas por operadores lógicos, como And y Or.

Cuando escriba un nombre de campo que contiene un espacio o signo de puntuación, incluya el nombre entre corchetes ([ ]). Por ejemplo, una tabla de información de clientes podría incluir información sobre clientes específicos:

SELECT [Customer's Favorite Restaurant]

Cuando se especifica el argumento criteria , los literales de fecha deben estar en formato estadounidense, incluso si no se usa la versión estadounidense del motor de base de datos de Microsoft Jet. Por ejemplo, 10 de mayo de 1996 se escribe 10/5/96 en el Reino Unido y 5/10/96 en los Estados Unidos. Asegúrese de incluir los literales de fecha entre signos de número (#) como se muestra en los siguientes ejemplos.

Para buscar registros con fecha 10 de mayo de 1996 en una base de datos del Reino Unido, debe usar la siguiente instrucción SQL:

SELECT * 
FROM Orders 
WHERE ShippedDate = #5/10/96#;

También puede usar la función DateValue, que está habilitada para la configuración internacional establecida por Microsoft Windows®. Por ejemplo, use este código para los Estados Unidos:

SELECT * 
FROM Orders 
WHERE ShippedDate = DateValue('5/10/96');

Y use este código para el Reino Unidos:

SELECT * 
FROM Orders 
WHERE ShippedDate = DateValue('10/5/96');

Nota:

[!NOTA] Si la columna a la que se hace referencia en la cadena de criterios es de tipo GUID, la expresión de criterios usa una sintaxis ligeramente diferente:

WHERE ReplicaID = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}}

Asegúrese de incluir las llaves anidadas y los guiones como se muestra.

Ejemplo:

En el siguiente ejemplo, se supone la existencia de un campo hipotético Salary (Salario) en una tabla denominada Employees (Empleados). Tenga en cuenta que este campo no existe realmente en la tabla Employees de la base de datos Northwind (Neptuno).

En este ejemplo, se seleccionan los campos LastName (Apellidos) y FirstName (Nombre) de cada registro en el que el apellido es King. Llama al procedimiento EnumFields, que se incluye en el ejemplo de la instrucción SELECT.

Sub WhereX() 
 
    Dim dbs As Database, rst As Recordset 
 
    ' Modify this line to include the path to Northwind 
    ' on your computer. 
    Set dbs = OpenDatabase("Northwind.mdb") 
 
    ' Select records from the Employees table where the 
    ' last name is King. 
    Set rst = dbs.OpenRecordset("SELECT LastName, " _ 
        & "FirstName FROM Employees " _ 
        & "WHERE LastName = 'King';") 
     
    ' Populate the Recordset. 
    rst.MoveLast 
     
    ' Call EnumFields to print the contents of the 
    ' Recordset. 
    EnumFields rst, 12 
 
    dbs.Close 
 
End Sub 

Vea también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.