2011-02-23 10 views
5
SELECT 
    deal_woot.*, 
    site.woot_off, 
    site.name AS site_name 
FROM deal_woot 
INNER JOIN site ON site.id = site_id 
WHERE site_id IN (2, 3, 4, 5, 6) 
GROUP BY site_id 
ORDER BY deal_woot.id DESC 
LIMIT 5 

Me gustaría ORDER BY antes de la agrupación, ¿cómo puedo lograr esto?GRUPO BY la consulta ignora la cláusula ORDER BY

+0

¿Puedes dar un ejemplo de lo que estás tratando de lograr? No puede tener campos en su selección que no agrupe o use en una función agregada como sum(). –

Respuesta

-1
 
SELECT 
    deal_woot.*, 
    site.woot_off, 
    site.name AS site_name 
FROM deal_woot 
INNER JOIN site ON site.id = site_id 
WHERE site_id IN (2, 3, 4, 5, 6) 
GROUP BY deal_woot.id DESC, site_id 
LIMIT 5 

I Supongamos que deal_woot.id es único que Grouping se basará en site_id

+0

¡Una solución agradable y simple! – Webnet

0

Dado que está agrupando por site_id, solo se devolverá 1 deal_woot fila. Intente ordenar por MAX() que devolverá el más alto id por cada site_id.

SELECT 
    deal_woot.*, 
    site.woot_off, 
    site.name AS site_name 
FROM deal_woot 
INNER JOIN site ON site.id = site_id 
WHERE site_id IN (2, 3, 4, 5, 6) 
GROUP BY site_id 
ORDER BY MAX(deal_woot.id) DESC 
LIMIT 5 

Nota: Puesto que es UB lo que será devuelto en realidad deal_woot fila, tratar spiting seguimiento de la consulta:

SELECT 
    deal_woot.*, 
    site.woot_off, 
    site.name AS site_name 
FROM site JOIN (
    SELECT site_id, MAX(deal_woot.id) MaxID 
    FROM deal_woot 
    WHERE site_id IN (2, 3, 4, 5, 6) 
    GROUP BY site_id 
) sg ON site.id = sg.site_id 
    JOIN deal_woot 
    ON site.id = deal_woot.site_id AND deal_woot.id = sg.MaxID 
ORDER BY sg.MaxID DESC 
LIMIT 5 
1

Con una sub-consulta como: SELECT *,COUNT(*) FROM (SELECT * from actions order by date DESC) AS actions GROUP BY ip;

0

Está realizando GROUP BY en site_id y está organizando sus registros en deal_woot.id.

Incluso usted lo ordena Antes del grupo la salida seguirá siendo la misma.

Tiene algún requisito específico para hacer las cosas, ya que la duda que está teniendo no tiene nada que ver con el orden por y agrupe.

Cuestiones relacionadas