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

tạo chế độ xem có xếp hạng, tên người dùng và số lượng hồ sơ người dùng

Bạn đã đi đúng hướng. Chỉ cần thực hiện những thay đổi nhỏ. Truy vấn sau đây sẽ cung cấp cho bạn kết quả mong muốn. Trong truy vấn bên trong, có 4 cột đầu tiên và để có được xếp hạng chéo, hãy nối nó thành (SELECT @curRank := 0) r đó là thủ thuật MySQL để tăng thứ hạng. cuối cùng chỉ cần Cnt đặt hàng để làm cho nó hoạt động.

SELECT username
    ,userid
    ,category
    ,Cnt
    ,@curRank := @curRank + 1 AS rank
    FROM (
            SELECT b.Username
                ,B.userid
                ,A.category
                ,count(*) Cnt
            FROM tblb B 
            JOIN tbla A
                ON B.UserID = A.User
            WHERE a.Category = 1
            GROUP BY b.username
        )a
,(SELECT @curRank := 0) r
Order by cnt desc

Để đưa nó vào Chế độ xem, bạn có thể sử dụng hack được mô tả bởi @ Gordon-Linoff trong câu hỏi này

Mã kết thúc sẽ giống như thế này.

CREATE VIEW TestView1
AS
    SELECT b.Username
           ,B.userid
           ,A.category
           ,COUNT(*) Cnt
        FROM tblb B
        JOIN tbla A
            ON B.UserID = A.User
        WHERE a.Category = 1
        GROUP BY b.username
        ORDER BY cnt DESC;

CREATE VIEW TestView2
AS
    SELECT t1.*
           ,( SELECT 1 + COUNT(*)
                FROM TestView1 AS t2
                WHERE t2.Cnt > t1.Cnt
                    OR (
                         t2.Cnt = t1.Cnt
                         AND t2.userid < t1.userid ) ) AS Rank
        FROM TestView1 AS t1

TestView1 được sử dụng để lấy 4 cột đầu tiên mà bạn đã xác định. TestView2 bạn chỉ cần chọn mọi thứ từ chế độ xem đầu tiên và thêm cột kiểm tra xem giá trị bạn chọn lớn hơn hay nhỏ hơn giá trị trong trường hợp đầu tiên của chế độ xem đó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. thay thế đối sánh chính xác trong php

  2. Sửa lỗi máy chủ mysql đã biến mất

  3. làm cách nào để chèn văn bản vào câu lệnh SELECT trong mysql và hiển thị đầu ra trong câu?

  4. Ràng buộc duy nhất cho phép các giá trị trống trong MySQL

  5. Nhiều bảng hoặc hàng, cái nào hiệu quả hơn trong SQL?