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

MySQL:Potrzebuję pokazywać od 1 do maksymalnie n postów od każdego użytkownika każdego dnia

Wypróbuj ten okropny kod SQL :)

select post_id, user_id, post_datetime, post_text from (
  select posts.*,
    if (user_id = @prev_user and date(post_datetime) = date(@prev_day),
      @row := @row + 1, @row := 1) idx,
    @prev_user := user_id,
    @prev_day := post_datetime
  from posts, (select @row := 1, @prev_user := null, @prev_day := null) init
  order by date(post_datetime), user_id, post_datetime desc
) s
where s.idx <= 2

Wynik:

+---------+---------+---------------------------------+----------------+
| POST_ID | USER_ID |          POST_DATETIME          |   POST_TEXT    |
+---------+---------+---------------------------------+----------------+
|       4 |     100 | December, 01 2012 04:00:00+0000 | lorem ipsum 4  |
|       2 |     100 | December, 01 2012 02:00:00+0000 | lorem ipsum 2  |
|       3 |     101 | December, 01 2012 03:00:00+0000 | lorem ipsum 3  |
|       5 |     102 | December, 01 2012 05:00:00+0000 | lorem ipsum 5  |
|       6 |     100 | December, 02 2012 03:00:00+0000 | lorem ipsum 6  |
|      10 |     101 | December, 02 2012 07:00:00+0000 | lorem ipsum 10 |
|       9 |     101 | December, 02 2012 06:00:00+0000 | lorem ipsum 9  |
|       7 |     102 | December, 02 2012 04:00:00+0000 | lorem ipsum 7  |
+---------+---------+---------------------------------+----------------+

Fiddle tutaj .

Pomyślałem, że kolejność byłaby bardziej odpowiednia, gdyby była malejąco według daty, ponieważ w rzeczywistości otrzymujesz pierwsze 2 najbliższe aktualnej dacie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę spowolnić zrzut MySQL, aby nie wpływać na bieżące obciążenie serwera?

  2. mysql pokazuje dostępne przedziały czasowe i przedziały czasowe zajęte z tabeli

  3. Niezwykle podstawowy PHP i Mysql

  4. wiele dodanych jednostek może mieć ten sam klucz podstawowy w źródle bazy danych

  5. Wstaw wiele elementów do jednego identyfikatora MySQL z pola wyboru wejściowego formularza PHP