2011-05-10 104 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