我有 3 张桌子:
mobile_users
- 与id
,phone_type
,...
2+3。iphone_purchases
与android_purchases
- 与id
, status
, user_id
,..
我试图让所有购买了 2 次或更多的用户。成功购买由 标识status > 0
。mobile_users
我也想在同一个查询中获取表中的用户总数。
这是我提出的查询:
SELECT COUNT(*) AS `users`,
( SELECT COUNT(*)
FROM `mobile_users`
) AS `total`
FROM `mobile_users`
WHERE `mobile_users`.`phone_type` = 'iphone'
AND ( SELECT COUNT(*)
FROM ( SELECT `status`,
`user_id`
FROM `iphone_purchases`
UNION
SELECT `status`,
`user_id`
FROM `android_purchases`
) AS `purchase_list`
WHERE `purchase_list`.`status` > 0
AND `purchase_list`.`user_id` = `mobile_users`.`id`
) >= 2
它很慢,我必须找到一种方法来改进它。任何帮助,将不胜感激!
编辑:您还应该考虑到我正在使用 PHP 中的子查询构建此查询。我正在用 WHERE 语句的更多条件来构建它。