gpt4 book ai didi

mysql - 跨两个表进行计数

转载 作者:行者123 更新时间:2023-11-29 09:03:21 25 4
gpt4 key购买 nike

我有一个 mysql 数据库,其中有两个表:预订表和用户表。它们通过预订表中的外键 user_id 链接。

我如何显示每个用户的预订数量。

我一直在尝试此查询的变体:

select first_name, last_name, count(*) 
from bookings
left join users on bookings.user_id
group by user_id
order by count(*);

但是它锁定数据库的时间非常长。

最佳答案

首先,您的 ON 子句不完整。通常它会是ON X=Y,你有ON X。这很重要,因为您正在告诉数据库如何链接两个表。我猜这是浪费时间最多的地方。

其次,此处使用的 LEFT JOIN 没有用(除非您想要没有用户的预订。)尝试 INNER JOIN。

第三,作为一般规则,最好执行 SmallTable INNER JOIN BigTable (并非总是如此,您的情况可能会有所不同。)

第四,如上所述,为 ORDER BY 子句使用别名。

尝试:

select first_name, last_name, count(*) as cnt
from users
inner join bookings on bookings.user_id = user.id
group by user_id
order by cnt;

关于mysql - 跨两个表进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7877262/

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