Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql wybierz złącze wewnętrzne z limitem

Możesz użyć zapytania o rangę mysql nie ma funkcji okna dla tego typu wyników, aby uzyskać n rekordów na grupę, nie sugeruję group_concat rozwiązanie, ponieważ jako articles Terminy mówią, że może być wystarczająca ilość danych i łatwo ominąć ograniczenie limitu 1024 znaków, jeśli zwiększysz ten limit, jest on również zależny od max_allowed_packet też

SELECT * FROM (
SELECT *,
@r:= CASE WHEN @g = c.id THEN @r +1 ELSE 1 END rownum,
@g:= c.id catgroup
 FROM category c
 JOIN articles a ON (c.id = a,category_id)
CROSS JOIN (SELECT @g:=0,@r:=0) t2
ORDER BY c.id , a.`date` desc
) t
 WHERE rownum <= 5

Powyżej oceni każdy artykuł w swojej grupie kategorii, możesz zobaczyć wynik rownum alias i w zewnętrznym zapytaniu po prostu filtruj wyniki artykułów do 5 na grupę kategorii



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Unikaj zduplikowanych identyfikatorów w PHP

  2. Wybierz dynamicznie kolumny na podstawie wartości kolumny

  3. Tworzenie tablicy wewnątrz tablicy z danych mysql do json

  4. MySQL MIN() i MAX() z LIMIT

  5. MySQL Create View, Replace View i Drop View Statements z przykładami