作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在运行 MySQL 查询 -
SELECT
u.userid, u.lastopen,
r.auto_renew_status, r.product_id, r.is_trial_period,
(SELECT count(apd.id) FROM apple_purchase_details as apd
WHERE apd.id = u.userid
GROUP BY u.userid
HAVING count(apd.id) < 5
) as total
FROM users as u, receipt as r
WHERE u.userid = r.id and r.is_trial_period = 'false' and r.auto_renew_status = 0
查询工作正常,但返回 NULL
,其中总计大于 5。
此外,当我尝试在 u.lastopen
上添加 ORDER BY
子句时,加载时间太长。我已经在 users
表中索引了 lastopen
。
谁能帮我解决这个问题吗?
最佳答案
它正在返回NULL
哪里total
大于 5,因为您使用 HAVING count(apd.id) < 5
指定了此值,这意味着当子查询大于 5 时将不返回任何内容,结果是 NULL
该特定行的值。
如果您不希望出现这种行为,请删除 HAVING
子查询中的约束。
此查询从多个表中检索数据,因此索引 lastopen
在users
没有多大帮助。我将在 JOIN
中使用的列上创建索引ON
条款。
更新
要获得所需的结果,请尝试:
SELECT
u.userid, u.lastopen,
r.auto_renew_status, r.product_id, r.is_trial_period,
FROM users as u
JOIN receipt as r ON u.userid = r.id
JOIN (
SELECT id, count(apd.id) FROM apple_purchase_details
GROUP BY id
HAVING apd.id > 5
) as apd ON apd.id = u.userid
WHERE r.is_trial_period = 'false' and r.auto_renew_status = 0
关于MySQL COUNT 与 WHERE 和 HAVING 以及 ORDER BY 在同一查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52969966/
我是一名优秀的程序员,十分优秀!