gpt4 book ai didi

mysql - 使用 where 子句合并 2 个 sql 语句

转载 作者:行者123 更新时间:2023-11-30 00:52:31 24 4
gpt4 key购买 nike

我有 2 个表,第一个是用户(13068),另一个是邀请(211343)用户上的 fbuid 与邀请上的邀请者相同。

所以我尝试将这两个表导出为 Excel,它应该如下所示;

u.name、u.adress、u.fbuid ....、COUNT(i.id)

所以我已经尝试过了;

SELECT u.*,(SELECT COUNT(i.id) FROM invitations i WHERE i.isaccepted = 1 and i.inviter = u.fbuid) as chance FROM users WHERE u.datecreated BETWEEN '2013-01-01' AND '2014-01-01' LIMIT 0,50

SELECT *,COUNT(i.id) as chance FROM users u LEFT JOIN invitations i ON u.fbuid = i.inviter WHERE u.datecreated BETWEEN '$startdate' AND '$enddate' and i.isaccepted=1 GROUP BY fbuid

问题是 left join 只给有邀请的用户,但只邀请了大约 2000 个用户,我需要列出所有用户。

第一个限制为 50,需要 36 秒。我无法想象所有记录花了多少钱。除了加入我还能做什么?或者说正确的方法应该是怎样的。

最佳答案

这是使用左连接的查询:

SELECT *, COUNT(i.id) as chance
FROM users u LEFT JOIN
invitations i
ON u.fbuid = i.inviter
WHERE u.datecreated BETWEEN '$startdate' AND '$enddate' and i.isaccepted=1
GROUP BY fbuid;

问题在于您正在 where 子句中的 i 表上进行过滤。由于左连接,该值可能为NULL。将该条件移至 on 子句:

SELECT u.*, COUNT(i.id) as chance
FROM users u LEFT JOIN
invitations i
ON u.fbuid = i.inviter and i.isaccepted = 1
WHERE u.datecreated BETWEEN '$startdate' AND '$enddate'
GROUP BY fbuid;

关于mysql - 使用 where 子句合并 2 个 sql 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20840689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com