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

Lần đăng nhập gần đây nhất của MYSQL và số lần đăng nhập trong 3 tháng qua

Trước tiên, hãy giải quyết từng vấn đề một cách riêng biệt:

SELECT A.UserID, MAX(TIME) AS LastLogin  
FROM UserMaster A  
LEFT JOIN UserWebActivity B
ON A.UserID = B.UserID  
AND Activity = 'Login'  
GROUP BY A.UserID

SELECT A.UserID, COUNT(Activity) AS Logins
FROM UserMaster A  
LEFT JOIN UserWebActivity B ON A.UserID = B.UserID  
AND Activity = 'Login'  
AND TIME BETWEEN (NOW() - INTERVAL 3 MONTH) AND NOW( )  
GROUP BY A.UserID

Kiểm tra chúng một cách riêng biệt để đảm bảo rằng mỗi truy vấn này hoạt động như bạn muốn và điều chỉnh chúng nếu cần.

Sau đó, khi bạn cảm thấy vui vì cả hai đều làm việc, hãy kết hợp các kết quả lại với nhau:

SELECT T1.UserID, T1.LastLogin, T2.Logins
FROM
(
    SELECT A.UserID, MAX(TIME) AS LastLogin  
    FROM UserMaster A  
    LEFT JOIN UserWebActivity B
    ON A.UserID = B.UserID  
    AND Activity = 'Login'  
    GROUP BY A.UserID
) AS T1
JOIN
(
    SELECT A.UserID, COUNT(Activity) AS Logins
    FROM UserMaster A  
    LEFT JOIN UserWebActivity B
    ON A.UserID = B.UserID  
    AND Activity = 'Login'
    AND TIME BETWEEN (NOW() - INTERVAL 3 MONTH) AND NOW()
    GROUP BY A.UserID
) AS T2
ON T1.UserID = T2.UserID

Điều này sẽ cho phép MySQL tận dụng tốt nhất các chỉ mục cho các truy vấn khác nhau.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đặt hàng nhiều cột ASC

  2. Cách sử dụng JDBC để kết nối cơ sở dữ liệu MySql

  3. Đang tải các tệp .sql từ bên trong PHP

  4. Quyền bị từ chối bên trong / var / www / html khi tạo một trang web và đó là các tệp với máy chủ apache2

  5. Có sự khác biệt về hiệu suất giữa HAVING trên bí danh và không sử dụng HAVING không