varias usar una traer solo sirve repetidos repetido registros registro que postgres para mostrar filas duplicados datos contar consulta como columna agrupar postgresql select distinct

postgresql - usar - Postgres: Distinto pero solo para una columna



postgresql contar registros duplicados (3)

¿Alguien sabe cómo buscar muchas columnas pero hacer solo una distinta en una columna?

Desea la cláusula DISTINCT ON .

No proporcionó datos de muestra o una consulta completa, por lo que no tengo nada que mostrarle. Quieres escribir algo como:

SELECT DISTINCT ON (name) fields, id, name, metadata FROM the_table;

Esto devolverá un conjunto de filas impredecibles (pero no "aleatorias"). Si desea que sea predecible agregue un ORDER BY cada respuesta de Clodaldo. Si quieres hacerlo verdaderamente aleatorio, querrás ORDER BY random() .

Tengo una tabla en pgsql con nombres (que tienen más de 1 millón de filas), pero también tengo muchos duplicados. Selecciono 3 campos: id , name , metadata .

Quiero seleccionarlos al azar con ORDER BY RANDOM() y LIMIT 1000 , por lo que hago esto son muchos pasos para guardar algo de memoria en mi script PHP.

Pero, ¿cómo puedo hacer eso? Solo me da una lista sin duplicados en los nombres.

Por ejemplo [1,"Michael Fox","2003-03-03,34,M,4545"] se devolverán pero no [2,"Michael Fox","1989-02-23,M,5633"] . El campo de nombre es el más importante y debe ser único en la lista cada vez que selecciono y debe ser aleatorio.

Intenté con el GROUP BY name , pero luego esperaba que tuviera id y metadatos en GROUP BY también o en una función de agrandamiento, pero no quiero que se filtren de alguna manera.

¿Alguien sabe cómo buscar muchas columnas pero hacer solo una distinta en una columna?


Para hacer una distinción en solo una (o n) columna (s):

select distinct on (name) name, col1, col2 from names

Esto devolverá cualquiera de las filas que contienen el nombre. Si desea controlar cuál de las filas se devolverá, debe solicitar:

select distinct on (name) name, col1, col2 from names order by name, col1

Devolverá la primera fila cuando lo solicite col1.

distinct on :

SELECT DISTINCT ON (expresión [, ...]) mantiene solo la primera fila de cada conjunto de filas donde las expresiones dadas son iguales. Las expresiones DISTINCT ON se interpretan usando las mismas reglas que para ORDER BY (ver arriba). Tenga en cuenta que la "primera fila" de cada conjunto es impredecible a menos que se utilice ORDER BY para garantizar que la fila deseada aparezca primero.

Las expresiones DISTINCT ON deben coincidir con la (s) expresión (es) ORDER BY más a la izquierda. La cláusula ORDER BY normalmente contendrá expresiones adicionales que determinan la precedencia deseada de las filas dentro de cada grupo DISTINCT ON.


SELECT NAME,MAX(ID) as ID,MAX(METADATA) as METADATA from SOMETABLE GROUP BY NAME