【发布时间】:2013-03-13 12:21:22
【问题描述】:
三个表
accounts, products, users
- 从用户表中选择用户 ID 和电子邮件,其中有 ID 帐户
-
然后从用户所在的产品表中过滤掉它们 购买超过 3 件产品 (需要统计产品表中的用户,如果他的数量超过3,则排除用户)。
SELECT id, email FROM users WHERE id IN ( SELECT user_id FROM accounts WHERE users.id = user_id )
我得到了所有用户 ID 和电子邮件,但现在我需要从产品表中过滤掉它们。在产品表中,我有“product_id”和“leader_id”,这是用户 ID。
我需要优化查询,因为表很大
【问题讨论】:
-
信息不足。我们不知道这些表是如何关联的。我们不知道表上是否存在任何索引来提高性能,也不知道您尝试了什么。
-
正是......向我们展示一些示例数据或您的表结构;)
-
@javier 这是一个很大的飞跃。你假设每个表都有一个名为 ID 的字段,我推断它是指他们的主键,可能是 Account_ID、Product_ID、User_ID 或者可能只是“ID”,我问的原因是模棱两可。
-
users 表:列是,id 和 email。帐户表:id 和 user_id。并在产品表列中:id、product_id 和 leader_id