Existen ciertas cláusulas que generalmente se sitúan en el SELECT antes del FROM y ayudan en el filtrado de registros. Estas cláusulas son a menudo conocidas como predicados y en esta sección veremos su funcionamiento.

TOP

TOP limita el número de registros que devuelve la consulta a la cantidad especificada en la cláusula.

SELECT TOP 4 *
FROM Clientes
ORDER BY idClientes DESC;
idClientes nombre apellidos dirección cuenta
7 Ignacio Herrero Dominguez C/ del girasol 3 NULL
6 Paloma Sanz Valdivia Av. de la Ilustración 49 790763467
5 Alejandro Valero Martinez C/ Serrano 67 778345112
4 Luis Sanchez García C/ de la luz 21 447824556

En el resultado de la ejecución, podemos observar que ha devuelto únicamente los últimos 4 registros de la tabla Clientes.

ALL

ALL devuelve todos los registros de la tabla. A diferencia de SELECT *, en SQL Server, SELECT ALL debe ir acompañado de al menos una columna, por lo que su uso es a menudo redundante e innecesario.

PostgreSQL en tu navegador · Ctrl+Enter para ejecutar · los cambios se deshacen al terminar
idClientes
1
2
3
4
5
6
7

Sin embargo, ALL puede sernos útiles para realizar comparaciones utilizando SUBSELECTS:

PostgreSQL en tu navegador · Ctrl+Enter para ejecutar · los cambios se deshacen al terminar
idClientes idPedidos producto precio
1 4 MacBook Pro M1 2449,5
NULL 8 Horno Balay 699,55

Esta ejecución nos está devolviendo los registros de la tabla Pedidos cuyos precios sean mayores a todos los precios del idClientes = 2.

La tabla Pedidos, consta de 2 registros para el idClientes = 2 con un precio de 549,95 y 499,99 respectivamente, por lo que nuestra consulta ha devuelto los valores adecuados.

Para entender mejor la importancia de esta cláusula, vamos a intentar ejecutar la SELECT anterior sin la cláusula ALL:

PostgreSQL en tu navegador · Ctrl+Enter para ejecutar · los cambios se deshacen al terminar
La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión.

Al tener la tabla Pedidos más de un registro con idClientes = 2, el sistema no es capaz de establecer la comparación. La cláusula ALL en este caso, indicaría al sistema que validase todos los registros con idClientes = 2 y devolver los campos indicados en la consulta principal.

DISTINCT

DISTINCT omite los registros cuyos campos seleccionados contienen datos duplicados.

PostgreSQL en tu navegador · Ctrl+Enter para ejecutar · los cambios se deshacen al terminar
idClientes
1
2
3
4
5

Si ejecutáramos la misma consulta sin la cláusula DISTICT, vemos que devuelve registros duplicados, ya que en nuestro sistema hay varios pedidos realizados por el mismo cliente. lo que se traduce que la tabla Pedidos contiene registros con el campo idClientes duplicados.

PostgreSQL en tu navegador · Ctrl+Enter para ejecutar · los cambios se deshacen al terminar
idClientes
1
2
2
3
4
4
5