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

Bắt một nhóm MySQL theo truy vấn để hiển thị hàng trong nhóm đó có giá trị cao nhất

Sử dụng:

  SELECT x.book_title,
         x.user_name
    FROM (SELECT b.book_title,
                 u.user_name,
                 br.review_date,
                 CASE
                   WHEN @book = b.book_title THEN @rownum := @rownum + 1
                   ELSE @rownum := 1
                 END AS rank,
                 @book := b.book_title
            FROM BOOKS b
            JOIN BOOK_REVIEWS br ON br.book_id = b.book_id
            JOIN USERS u ON u.user_id = br.user_id
            JOIN (SELECT @rownum := 0, @book := '') r
        ORDER BY b.book_title, br.review_date DESC) x
   WHERE x.rank = 1
ORDER BY x.review_date DESC
   LIMIT 30

MySQL không có chức năng phân tích / xếp hạng / cửa sổ, nhưng điều này xếp hạng các bài đánh giá trong đó bài đánh giá mới nhất được đánh dấu là 1. Điều này dựa trên cơ sở mỗi cuốn sách ...

Tôi đã xác định ngày đánh giá để đặt hàng muộn nhất trong số đó là những cuốn sách mới nhất ...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thoát khỏi Sử dụng tạm thời; Sử dụng filesort

  2. Thực hiện một truy vấn tham gia trong loopback.io

  3. Cách lấy các tệp đã tải lên bằng php

  4. Cách tìm ra mật khẩu gốc MySQL

  5. Node Mysql không đồng bộ nhiều truy vấn