Informática, Tipos de arquivos
SQL distinta: de descrición, exemplos, propiedades
Moitas veces, cando usa SQL para recuperar datos a partir das táboas, o usuario recibe os datos redundantes é a existencia dun liñas duplicadas absolutamente idénticos. Para evitar esta situación, use SQL argumento distinto na sentenza Select. Este artigo pode discutir exemplos do uso deste argumento, así como situacións en que a aplicación debe ser abandonadas polo argumento.
Antes de pasarmos a considerar os exemplos concretos, cree a base de datos necesario un par de mesas.
mesa de preparación
Imaxina que temos un almacena información da base de datos sobre o fondo presentados en dúas táboas. Este oboi mesa (fondo) con campos de ID (identificador único), do tipo (tipo de fondo -. Papel, vinilo, etc.), cor (cor), un struct (estrutura) eo prezo (prezo). E mesa Ostatki (residuos) con campos id_oboi (unha referencia ao identificador único na táboa Oboi) e count (o número de rolos en stock).
Cubrir a táboa de datos. Na táboa engadir o fondo 9 rexistros:
Oboi | ||||
ID | tipo | cor | struct | prezo |
1 | papel | Multicolor | en relevo | 56,9 |
2 | papel dobre en capas | beige | suave | 114,8 |
3 | vinilo | laranxa | en relevo | 504 |
4 | veo | beige | en relevo | 1020,9 |
5 | papel dobre en capas | beige | suave | 150,6 |
6 | papel | Multicolor | suave | 95,4 |
7 | vinilo | marrón | suave | 372 |
8 | veo | Blanco | en relevo | 980,1 |
9 | folla | -de-rosa | suave | 1166,5 |
A táboa cos restos - e nove rexistros:
Ostatki | |
id_oboi | contar |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
Procedemos á descrición da orde distinta en SQL.
Lugar distinto na cláusula Select
argumento distinto debe ser colocado inmediatamente despois a palabra chave Select nas consultas. Aplicou a todas as columnas especificadas na sentenza Select, porque vai ser eliminado do resultado da consulta final é cordas absolutamente idénticos. Así, unha vez é suficiente para especificar cando escribir SQL «elección distinta» da solicitude. A excepción é a utilización de funcións agregadas dentro distintas que mirar un pouco máis tarde.
Debe lembrar que a maioría da base de datos e non recoñece o tipo de solicitude:
Seleccione Ostatki.Count distinta, Oboi distinta. * DE oboi INNER JOIN Ostatki NO Oboi.id = Ostatki.id_oboi |
Non foi considerado argumento varias veces ou xa indicado, pero antes da segunda, terceira ou outra columna seleccionada. Recibirá un erro referíndose a un erro de sintaxe.
Aplicación consultas distintas no estándar
É evidente que con mesas axeitadas estrutura do edificio e enche-los dentro dunha única tabela excluída a situación cando hai cordas absolutamente idénticos. Polo tanto, a execución da consulta «Escolla distinta *» cunha mostra de unha táboa é implacable.
Considero unha situación cando necesitamos saber que tipo temos fondo, só por conveniencia, para clasificar por tipo:
seleccionar Oboi.type De orde Oboi por tipo |
E obter os resultados:
tipo |
papel |
papel |
papel dobre en capas |
papel dobre en capas |
vinilo |
vinilo |
folla |
veo |
veo |
Como se pode ver na táboa existen liñas duplicadas. Se sumarmos a proposta Seleccione distinta:
Seleccione Oboi.type distinta De orde Oboi por tipo |
obtemos o resultado sen repetición:
tipo |
papel |
papel dobre en capas |
vinilo |
folla |
veo |
Así, se introducir correctamente os datos nunha táboa, a continuación, inmediatamente despois unha chamada ou solicitude de compradores podemos responder que o fondo líquido, fibra de vidro e fondo de acrílico dispoñibles na tenda non son. Dado que a variedade de tendas xeralmente non se limita a un centenar de fondo, ver a lista dos tipos non-únicos sería moi laborioso.
Aplicación de funcións de agregación distintas dentro
argumento distinto SQL pode ser usado con calquera función agregada. Pero ao Min e Max a súa aplicación non terá ningún efecto, pero ao calcular a suma ou o valor medio de cando en cando é unha situación onde ninguén tería que ter en conta as repeticións.
Supoña que queremos comprobar a capacidade do noso almacén e para enviar esta solicitude, calcula o número total de bobinas en stock:
SELECT sum (Ostatki.count) DE Ostatki |
Solicitude dará a resposta 143. Se, con todo, que cambiará a:
SELECT sum (Ostatki.count distinta) DE Ostatki |
obtense o total de 119, como fondo para os números de pezas 3 e 7 son en stock na mesma cantidade. Con todo, é obvio que a resposta está errada.
Na maioría das veces usado en SQL Conde función distinta. Así, podemos facilmente descubrir cantos tipos orixinais de fondo, temos:
SELECT COUNT (Oboi.type distinta) DE oboi |
E obter o resultado de 5 - papel común e dobre capa de vinilo e non tecido. Certamente todos vimos os anuncios, tales como: "Só temos máis de 20 tipos diferentes de fondo", polo que se entende que esta tenda non é só unha ducia de pan e unha variedade de fondo tipos modernos.
É interesante que na mesma consulta, é posible especificar múltiples funcións como asignar DISTINCT Conde, e sen el. Esa é a única situación en que distintos Select'e pode estar presente en varias ocasións.
Cando a abandonar o uso do argumento
A partir da utilización de SQL argumento distinto debe ser abandonada nun dos dous casos:
- Realizar unha selección de mesas e estamos seguros por valor único de cada. Neste caso, o uso do argumento é impropio, porque é unha carga adicional no servidor ou cliente (en función do tipo de DBMS).
- Ten medo de perder os seus datos. Imos explicar.
xefe Supoña que lle pide para incluír o fondo que ten, coa indicación de só dúas columnas - o tipo e cor. Por forza do costume, dá un argumento distinto:
Seleccione Oboi.type distinta, Oboi.color DE oboi ORDER BY Oboi.type |
E - perder algúns datos:
tipo | cor |
papel | Multicolor |
papel dobre en capas | beige |
vinilo | marrón |
vinilo | laranxa |
folla | -de-rosa |
veo | beige |
veo | Blanco |
Pode dar a impresión de que o fondo papel (convencional e de dobre capa) temos só unha mente, de feito, mesmo na nosa pequena mesa de dous artigos (resultado sen distintos):
tipo | cor |
papel | Multicolor |
papel | Multicolor |
papel dobre en capas | beige |
papel dobre en capas | beige |
vinilo | marrón |
vinilo | laranxa |
folla | -de-rosa |
veo | Blanco |
veo | beige |
Polo tanto, como, por escrito, calquera proposta co argumento de necesidade distinta de ser coidadoso e competente para decidir sobre a súa aplicación en función da tarefa.
alternativa distinta
Contrariamente á tese distinta - Todos argumento. Na súa aplicación liñas duplicadas son almacenadas. Pero como a base de datos estándar e descobre que é necesario para mostrar todos os valores, o argumento Todos - é si un cualificado que o argumento función real.
Similar articles
Trending Now