【发布时间】:2011-02-01 19:28:55
【问题描述】:
尝试构建一个有点复杂的 WordPress 查询。在一个查询中,我试图:
- 拉出所有 WordPress 作者
- 仅限发表过 10 篇或更多帖子的作者(我遇到的问题)
- 按最新帖子对作者进行排序。
这是我原来的查询:
SELECT wp_users.ID, display_name, user_url, user_email, MAX(post_date) as date FROM wp_users, wp_posts WHERE wp_users.ID = wp_posts.post_author AND wp_posts.post_status = 'publish' AND wp_posts.post_type = 'post' GROUP BY display_name ORDER BY date DESC;
此查询返回所有作者,甚至那些发表文章不超过 9 篇的作者。
这里是帖子计数的查询:
SELECT wp_users.ID, display_name, user_url, user_email, MAX(post_date) as date, COUNT(post_date) as post_count FROM wp_users, wp_posts WHERE wp_users.ID = wp_posts.post_author AND wp_posts.post_status = 'publish' AND wp_posts.post_type = 'post' GROUP BY display_name ORDER BY date DESC;
在这个查询中你可以看到我已经添加了:
COUNT(post_date) as post_count
它完美地返回了一切。
只有当我添加这个 WHERE 子句时,查询才会中断
post_count > 9
我收到此错误消息:
“where 子句”中的未知列“post_count”
知道为什么会这样吗?我的理论:
- 不适用于分组
- 或者 MySQL 不允许超过一个 AS 语句
如果你能解释一下,我将不胜感激。
谢谢。
【问题讨论】: