via*_*ian 5 mysql sql nested-queries
我可以以某种方式连接表并避免在以下MySQL查询中使用distinct.invite_by_id显示邀请此用户的用户ID.
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;
Run Code Online (Sandbox Code Playgroud)
尝试这样的操作,我更改了子查询表名称以使其更清晰:
Select
user.id,
all_time.total AS theCount,
last_month.total AS theCount2
From users AS user
Left Outer Join
(Select Count(id) as total, invited_by_id
From users
Group By invited_by_id) as all_time
On all_time.invited_by_id = user.id
Left Outer Join
(Select Count(id) as total, invited_by_id
From users
Where signup_date >= NOW() - INTERVAL 30 DAY
Group By invited_by_id) AS last_month
On last_month.invited_by_id = user.id
Run Code Online (Sandbox Code Playgroud)
如果这是您经常运行的内容,请确保对其user.invited_by_id进行索引!
| 归档时间: |
|
| 查看次数: |
426 次 |
| 最近记录: |