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

Làm cách nào để tôi có thể sắp xếp các hàng đã chọn theo cách khác

Vui lòng thử truy vấn này bên dưới. Sử dụng ROW_NUMBER() OVER(PARTITION BY ..) tạo số thứ hạng / bản ghi cho mỗi 'which' các mặt hàng và sắp xếp dựa trên điều này. (Hy vọng điều này sẽ hiệu quả với bạn, tôi không có lược đồ bảng hoặc tập lệnh dữ liệu mẫu để tự thử)

SELECT
  pr1.id AS user_id,
  pr1.title AS user_name,
  pr2.id AS liker_id,
  pr2.title AS liker_name,
  x.which AS which_table,
  x.cnt AS total
FROM 
(
  SELECT rid, rootid, which, COUNT(*) AS cnt
        ,ROW_NUMBER() OVER(PARTITION  BY which ORDER BY rid) AS new_order
  FROM
  (
    SELECT rid, rootid, 'vote' which FROM p_likes
    UNION ALL 
    SELECT rid, rootid, 'comment' which FROM p_comments
    UNION ALL 
    SELECT rid, rootid, 'friend' which FROM relations
  ) y
  WHERE y.rootid = 1246 AND y.rootid <> y.rid
  GROUP BY y.rid, y.rootid, y.which
) x
INNER JOIN pagesroot pr1 on x.rootid = pr1.id
INNER JOIN pagesroot pr2 on x.rid = pr2.id
ORDER BY new_order,x.cnt desc;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận tổng số hàng khi sử dụng LIMIT?

  2. Lưu trữ UUID v4 trong MySQL

  3. PreparedStatement:Tôi có thể cung cấp tên cột làm tham số không?

  4. Cách so sánh ngày tháng sử dụng giữa mệnh đề trong chế độ ngủ đông

  5. Các hàm tổng hợp trong MySQL không có mệnh đề GROUP BY