/ / SQL distinto: descripción, ejemplos, propiedades

SQL distinto: descripción, ejemplos, propiedades

A menudo cuando se utiliza SQL para recuperarinformación de las tablas, el usuario recibe datos redundantes, que consisten en la presencia de filas duplicadas absolutamente idénticas. Para eliminar esta situación, use el argumento SQL distinto en la cláusula Select. Este artículo discutirá ejemplos del uso de este argumento, así como las situaciones en las que se debe abandonar el uso del argumento.

Antes de comenzar a considerar ejemplos concretos, crearemos un par de tablas necesarias en la base de datos.

sql distinto

Preparación de mesas

Imagina lo que está almacenado en nuestra base de datos.Información de fondo de pantalla presentada en dos tablas. Estos son la tabla Oboi (fondo de pantalla) con los campos id (identificador único), tipo (tipo de fondo de pantalla - papel, vinilo, etc.), color (color), estructura (estructura) y precio (precio). Y la tabla Ostatki (remanentes) con los campos id_oboi (enlace a un identificador único en la tabla Oboi) y cuenta (el número de rollos en stock).

Rellena la tabla con datos. Agrega 9 entradas a la tabla con fondo de pantalla:

Fondos de pantalla

iba

tipo

colorear

estructura

precio

1

Papel

Multicolor

En relieve

56,9

2

Doble capa de papel

Beige

Liso

114,8

3

Vinilo

Naranja

En relieve

504

4

Flizelinovye

Beige

En relieve

1020,9

5

Doble capa de papel

Beige

Liso

150,6

6

Papel

Multicolor

Liso

95,4

7

Vinilo

Marrón

Liso

372

8

Flizelinovye

Los blancos

En relieve

980,1

9

Tela

Rosa

Liso

1166,5

También hay nueve entradas en la tabla con saldos:

Las sobras

id_oboi

contar

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Procedemos a la descripción de cómo utilizar distintas en SQL.

Coloque distinto en la cláusula de selección

El argumento distinto debe ser colocado inmediatamente despuésSeleccionar palabra clave en las consultas. Se aplica inmediatamente a todas las columnas especificadas en la cláusula Select, porque excluirá filas absolutamente idénticas del resultado final de la consulta. Por lo tanto, es suficiente especificar el "seleccionar distinto" una vez al escribir la consulta SQL. La excepción es el uso de distintas funciones agregadas internas, que se considerarán un poco más adelante.

sql seleccionar distinto

Debe recordarse que la mayoría de los DBMS no reconocen su consulta del formulario:

SELECCIONE la distinción restante. Cuenta, fondo de pantalla distintivo. *

DE Oboi

INNER EIN Remnants ON Wallpaper.id = Remnants.id_oboi

Aquí, el argumento se especifica varias veces, o se especifica solo una vez, pero antes de la segunda, tercera u otra columna seleccionable. Recibirá un error con referencia a inexactitudes en la sintaxis.

Usando distintas consultas estándar

Obviamente, con estructura propia.las tablas y su relleno, dentro de una tabla, se excluyen las situaciones cuando se encuentran líneas absolutamente idénticas. Por lo tanto, la ejecución de la consulta "Seleccionar distinto *" con una selección de una tabla es prácticamente poco práctica.

distinto en sql

Imagine una situación en la que necesitamos averiguar qué tipo de fondo de pantalla tenemos, inmediatamente por comodidad, ordenamos por tipo

SELECCIONAR Oboi.type

DESDE Oboi orden por tipo

Y obtenemos el resultado:

tipo

Papel

Papel

Doble capa de papel

Doble capa de papel

Vinilo

Vinilo

Tela

Flizelinovye

Flizelinovye

Como puede ver, la tabla contiene filas duplicadas. Si agregamos a la cláusula de selección distinta:

SELECCIONAR Oboi.type distinto

DESDE Oboi orden por tipo

Entonces obtenemos el resultado sin repeticiones:

tipo

Papel

Doble capa de papel

Vinilo

Tela

Flizelinovye

Por lo tanto, si los datos fueron ingresados ​​correctamente enLa mesa, inmediatamente después de una llamada o solicitud del cliente, podremos responder que no hay papel tapiz líquido, paredes de vidrio y papel acrílico en la tienda. Teniendo en cuenta que el surtido en las tiendas generalmente no se limita a cien fondos de pantalla, sería bastante laborioso revisar la lista de tipos no únicos.

Usando distintas funciones agregadas internas

El argumento distinto de SQL se puede utilizar con cualquierfunción agregada. Pero para Min y Max, su uso no tendrá ningún efecto, y al calcular la suma o el valor promedio, es raro imaginar una situación en la que no sería necesario tener en cuenta las repeticiones.

Supongamos que queremos saber cuán lleno está nuestro almacén, y para ello enviamos una solicitud que calcula el número total de rollos en el almacén:

SELECCIONE suma (Ostatki.count)

De permanece

La solicitud responderá 143. Si cambiamos a:

SELECCIONAR suma (distinto Ostatki.count)

De permanece

luego obtenemos solo 119, porque el papel tapiz de los artículos 3 y 7 está en stock en la misma cantidad. Sin embargo, es obvio que esta respuesta es incorrecta.

La mayoría de las veces en SQL, distintas se utiliza con la función Count. Entonces, sin dificultad, podemos descubrir cuántos tipos de fondos de pantalla únicos tenemos todos:

Cuenta SELECT (tipo Oboi distinto)

DE Oboi

И получить результат 5 – бумажные обычные и dos capas, vinilo, tela y no tejido. Seguramente todos vieron un anuncio como: "¡Solo tenemos más de 20 tipos de fondos de pantalla diferentes!", Lo que significa que en esta tienda no hay un par de docenas de rollos de todo, sino fondos de pantalla de los tipos modernos más diversos.

Интересно, что в одном запросе можно указывать varias funciones de Count con y sin atributo distinto. Es decir, esta es la única situación en la que distintos en Select "e pueden estar presentes varias veces.

Cuando abandonar el argumento

El uso del argumento distinto de SQL debe descartarse en uno de dos casos:

  1. Usted selecciona de las tablas y confía enUnicidad de valores en cada uno. En este caso, el uso del argumento no es práctico, ya que se trata de una carga adicional en el servidor o el cliente (según el tipo de DBMS).
  2. Tienes miedo de perder los datos necesarios. Vamos a explicar

Supongamos que un jefe le pide que enumere los fondos de pantalla que tiene, con solo dos columnas: tipo y color. Por costumbre, especifica el argumento distinto:

SELECCIONE distintos Oboi.type, Oboi.color

DE Oboi

ORDEN SERÍA.

Y - pierda algunos de los datos:

tipo

colorear

Papel

Multicolor

Doble capa de papel

Beige

Vinilo

Marrón

Vinilo

Naranja

Tela

Rosa

Flizelinovye

Beige

Flizelinovye

Los blancos

Puede parecer que solo tenemos un tipo de papel tapiz de papel (ordinario y de dos capas), aunque, de hecho, incluso en nuestra pequeña mesa hay dos números de artículo (el resultado no es distinto):

tipo

colorear

Papel

Multicolor

Papel

Multicolor

Doble capa de papel

Beige

Doble capa de papel

Beige

Vinilo

Marrón

Vinilo

Naranja

Tela

Rosa

Flizelinovye

Los blancos

Flizelinovye

Beige

Por lo tanto, como al escribir cualquier solicitud, con el argumento distinto, debe tener cuidado y resolver correctamente el problema con su aplicación, dependiendo de la tarea.

Alternativa distinta

Lo contrario de distinto es el argumentoTodos. Cuando se aplica, se guardan las líneas duplicadas. Pero dado que, de manera predeterminada, el DBMS cree que todos los valores deberían mostrarse, entonces el argumento All es más un calificador que un argumento funcional real.

descripción sql distinta
Esperamos que ahora entiendas cuándodistinto (SQL) se aplica. La descripción le proporcionó información completa sobre la conveniencia de aplicar este argumento para resolver varios problemas. De hecho, resultó que incluso un argumento tan simple en su aplicación oculta la probabilidad bastante tangible de perder algunos datos y mostrar información inexacta.

Me gustó:
0
Publicaciones populares
Desarrollo Espiritual
Comida
yup