2010-04-06 8 views

Odpowiedz

1

Zastanawiam się, czy to będzie działać:

select * from table where id in (select distinct max(id) from table group by name) 
+0

Możesz dostać zbyt wiele wierszy. Twoja instrukcja zwraca wszystkie wiersze mające identyfikator, który jest maksymalny dla dowolnej grupy (niekoniecznie do tej grupy, do której należy ten wiersz). Rozważmy następujące pary (id, name): (1, foo), (2, foo), (2, bar), (3, słupkowy). Chcesz odzyskać (2, foo) i (3, pasek), ale twoje zapytanie również zwraca (2, pasek), ponieważ 2 jest maksimum grupy foo. – titanoboa

+0

Dodano DISTINCT, aby wybrać – Riho

0
SELECT di.id, di.orderer, di.ghigh, di.glow 
FROM (
     SELECT glow, MIN(orderer) AS orderer 
     FROM t_distinct d 
     GROUP BY 
       glow 
     ) dd 
JOIN t_distinct di 
ON  di.id = 
     (
     SELECT id 
     FROM t_distinct ds 
     WHERE ds.glow = dd.glow 
       AND ds.orderer = dd.orderer 
     ORDER BY 
       glow DESC, orderer DESC, id DESC 
     LIMIT 1 
     ) 

Zobacz ten artykuł więcej wyjaśnień:

0

spojrzeć na następujące zapytanie:

SELECT items.* 
FROM items, (select @grouping_value:=null) as init 
WHERE GREATEST([email protected]_value, 
       IF(@grouping_value:=grouping_field,0,0)) 
ORDER BY grouping_field, sorted_field DESC 

Chodzi o to, aby uporządkować dane z tabeli poprzez grupowanie pola i pola posortowaną i wziąć pierwszy wiersz z każdej grupy

1

natknąłem tego wątku podczas pracy na jakimś kodzie forum. Chciałem uzyskać najnowszy wpis dla każdego wątku i wyświetlić go na liście wątków dla konkretnej planszy.

Powyższa odpowiedź Quassnoja była mi bardzo pomocna i udało mi się ją dostosować. Oto kod na wypadek, gdyby pomógł komuś innemu:

SELECT p.id As post_id, p.post_number, p.topic_id 
FROM forum_post p, (
    SELECT topic_id, MAX(post_number) As max_post_number 
    FROM forum_post d 
    GROUP BY topic_id) dd 
WHERE p.id = 
(
    SELECT id 
    FROM forum_post 
    WHERE topic_id = dd.topic_id 
    AND post_number = dd.max_post_number 
    ORDER BY topic_id DESC, post_number DESC, id DESC 
    LIMIT 1 
)