Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL:Tôi cần hiển thị từ 1 đến tối đa n bài đăng từ mỗi người dùng mỗi ngày

Hãy thử mã SQL khủng khiếp này :)

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

Kết quả:

+---------+---------+---------------------------------+----------------+
| 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 tại đây .

Tôi nghĩ thứ tự sẽ phù hợp hơn nếu nó giảm dần theo ngày, vì bạn đang thực sự nhận được 2 thứ hạng đầu gần nhất với ngày hiện tại.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Làm thế nào để sửa đổi giá trị mặc định của cột?

  2. Sử dụng TIMESTAMP của MySQL so với lưu trữ trực tiếp dấu thời gian

  3. Nhân bản GROUP_CONCAT cho gấu trúc.DataFrame

  4. lưu trữ mật khẩu an toàn cho api mà không cần mã hóa nó

  5. Giữ lại các giá trị hộp văn bản ngay cả sau khi làm mới