Mysql seleccionar distinto


Estoy tratando de seleccionar las filas duplicadas en la tabla mysql está funcionando bien para mí, pero el problema es que no me permite seleccionar todos los campos en esa consulta , solo me permite seleccionar el nombre del campo que utilicé como distinto , déjame escribir la consulta para una mejor comprensión

mysql_query("SELECT DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")

mysql_query("SELECT * , DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")

1st one is working fine

Ahora, cuando estoy tratando de seleccionar todos los campos, estoy terminando con errores

Estoy tratando de seleccionar el último de los duplicados digamos que ticket_id 127 es 3 veces en la fila id 7,8,9, así que quiero seleccionarlo una vez con la última entrada que sería 9 en este caso y esto se aplica a todo el resto de ticket_id

Cualquier idea gracias

Author: Martin Smith, 2011-08-31

5 answers

¿Estás buscando "SELECT * FROM temp_tickets GROUP BY ticket_id ORDER BY ticket_id ?

ACTUALIZACIÓN

SELECT t.* 
FROM 
(SELECT ticket_id, MAX(id) as id FROM temp_tickets GROUP BY ticket_id) a  
INNER JOIN temp_tickets t ON (t.id = a.id)
 39
Author: a1ex07,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-30 22:45:12

DISTINCT no es una función que se aplica solo a algunas columnas. Es un modificador de consulta que se aplica a todas las columnas de la lista de selección.

Es decir, DISTINCT reduce filas solo si todas las columnas son idénticas a las columnas de otra fila.

DISTINCT debe seguir inmediatamente después de SELECT (junto con otros modificadores de consulta, como SQL_CALC_FOUND_ROWS). Luego, siguiendo los modificadores de consulta, puede enumerar columnas.

  • DERECHA: SELECT DISTINCT foo, ticket_id FROM table...

    Muestra una fila para cada emparejamiento distinto de valores entre ticket_id y foo.

  • INCORRECTO: SELECT foo, DISTINCT ticket_id FROM table...

    Si hay tres valores distintos de ticket_id, ¿devolvería esto solo tres filas? ¿Qué pasa si hay seis valores distintos de foo? ¿Qué tres valores de los seis valores posibles de foo deben ser emitidos?
    Es ambiguo como está escrito.

 67
Author: Bill Karwin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-30 22:45:28

Puede usar group por en lugar de distinct. Porque cuando se utiliza distinto, obtendrá lucha para seleccionar todos los valores de la tabla. A diferencia de cuando se utiliza group by, puede obtener valores distintos y también todos los campos en la tabla.

 8
Author: John,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-24 18:42:27

Puedes usar así

Mysql_query ("SELECT DISTINCT (ticket_id), column1, column2, column3 FROM temp_tickets ORDER BY ticket_id")

 2
Author: Rahul Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-13 20:48:39
 0
Author: Nicolas Modrzyk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-30 22:34:29