gpt4 book ai didi

MYSQL - 从 2 个表中获取行数

转载 作者:行者123 更新时间:2023-11-28 23:19:36 27 4
gpt4 key购买 nike

我希望这对某人来说是一个简单的问题,我正在尝试获取属于某个 regionID 的用户数。

我有一个用户表和一个 field 表,我想匹配特定区域 ID 的用户区域和 field 区域。

例如

SELECT COUNT(*) FROM users 
LEFT JOIN venues
ON users.region = venues.region
WHERE venues.regionID = '18'

我的各种尝试结果导致数百万,到 1 到无响应页面(一口气)

示例表数据:

用户

userID = 1  
region = 'Brisbane'

地点

venueID = 1  
region = 'Brisbane'
regionID = '18'// which equates to Queensland

谢谢

最佳答案

我猜(不知道)您想要一个符合您的 regionId 标准的 distinct 用户数。

你可以这样做。

SELECT COUNT(*)
FROM users
WHERE region IN (SELECT region FROM venues WHERE regionID = '18')

或者,您可以像这样获取每个地区的不同用户数。

SELECT COUNT(DISTINCT users.userID) users,
region.regionID
FROM users
JOIN venues ON users.region = venues.region
GROUP BY region.regionID

我猜你的 users 表中有一个 userID 列。

COUNT(*) 可能无法在 JOIN 中工作,因为连接操作的结果可能包含与 users 表本身不同的行数。

这是其中一种操作,它有助于了解大量 SQL,甚至可以指定您想要的结果。幸运的是,DISTINCT 关键字可以帮助将大计数减少为更小、更有意义的计数。

为了提高性能,您可能应该在 (region, usersID) 列的 users 表中添加复合索引。此 DDL 查询可能会为您做到这一点。

      ALTER TABLE users ADD INDEX region_userID  (region, usersID)

另外,在你的另一张 table 上,试试这两个

      ALTER TABLE venues ADD INDEX regionID_region (regionID, region)
ALTER TABLE venues ADD INDEX region_regionID (region, regionID)

阅读:http://use-the-index-luke/

关于MYSQL - 从 2 个表中获取行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42377180/

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