Tengo una tabla en pgsql con nombres (que tiene más de 1 millón de filas), pero también tengo muchos duplicados. Selecciono 3 campos: id, name, metadata.
Quiero seleccionarlos aleatoriamente con ORDER BY RANDOM()y LIMIT 1000, así que hago varios pasos para ahorrar algo de memoria en mi script PHP.
Pero, ¿cómo puedo hacer eso para que solo me dé una lista sin duplicados en los nombres?
Por ejemplo [1,"Michael Fox","2003-03-03,34,M,4545"], se devolverá 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 hago la selección y debe ser aleatorio.
Intenté con GROUP BY name, pero luego espera que tenga una identificación y metadatos en la GROUP BYfunción también o en una función adicional, pero no quiero que se filtren de alguna manera.
¿Alguien sabe cómo obtener muchas columnas pero solo hacer una diferencia en una columna?
fuente

order by namerequerido? ¿Produciría un resultado diferente conorder by col1?namees necesario. Consultedistinct onel manual.Quieres la
DISTINCT ONcláusula .No proporcionaste datos de muestra o una consulta completa, así que no tengo nada que mostrarte. Quieres escribir algo como:
Esto devolverá un conjunto de filas impredecible (pero no "aleatorio"). Si desea que sea predecible, agregue una
ORDER BYrespuesta de Clodaldo. Si quieres que sea realmente aleatorio, querrás hacerloORDER BY random().fuente
fuente
GROUP BYcláusula.