2011-05-10 101 views
1

所以我现在要做的是根据另一个自动计算的值选择一个值的数据集(听起来很复杂,这不是我想的,我不是那个多成英文)MySQL变量/别名不可用

我的SQL代码如下所示:

SELECT ticket.ref_id AS id, COUNT(*) AS reports, (COUNT(*)/post.views) AS 
treshold,post.views AS views 
FROM ticket, post 
WHERE ticket.ref_id = post.id AND (reports/post.views) 
GROUP BY ref_id 
ORDER BY views,reports DESC 

的问题是,当我尝试使用treshold WHERE子句查询失败报告并说有'字段列表'中没有这样的值。 我知道问题出在哪里,这是MySQL似乎不允许在WHERE子句中使用'自定义'字段,但我真的需要这个,我不知道如何解决它。
仅仅使用COUNT(*)不起作用,因为它不知道要计算什么。

任何人都可以帮助我解决这个问题吗?我认为这是完全基本的SQL,但目前我困在此处。

回答

2

您可以使用HAVING子句而不是WHERE作为不可引用的列。它性能较差,但它会完成这项工作。

http://dev.mysql.com/doc/refman/5.0/en/select.html

HAVING子句应用于近 最后,就在项目被送到 客户端,没有优化。 (LIMIT是具有后施加。)

HAVING子句可以指任何 柱或别名在SELECT列表或外 子查询以select_expr 命名,并且向聚集函数

+0

谢谢:)我一直都知道,这个问题很简单,因为我做到了 – awildturtok 2011-05-10 19:56:10