Tôi có thể tham gia bằng cách nào đó bằng cách nào đó và tránh sử dụng khác biệt trong truy vấn MySQL sau đây. invite_by_id hiển thị id người dùng của người đã mời người dùng này.Làm cách nào để tối ưu hóa truy vấn lồng nhau?
SELECT
user1.id, count(distinct user2.id) AS theCount, count(distinct user3.id) AS theCount2
FROM
users AS user1
LEFT OUTER JOIN
users AS user2 ON user2.invited_by_id=user1.id
LEFT OUTER JOIN (
SELECT id, invited_by_id FROM users WHERE signup_date >= NOW() - INTERVAL 30 DAY
) AS user3 ON user3.invited_by_id=user1.id
GROUP BY user1.id;
Tại sao bạn cần phân biệt? Dường như với tôi rằng người dùng X chỉ nên được người dùng Y * một lần * mời. –
@Lieven Kể từ khi bảng đang được tham gia trong hai lần bạn có thể nhận được hàng trùng lặp. –