2011-03-03 63 views
0

我有一個表,其中包含以下列:user_id,key,value和flag。 SELECT,FROM,WHERE,GROUP BY和ORDER BY按照預期自行工作。當我嘗試將密鑰添加到表中時,出現檢查我的語法的錯誤。關鍵是問題,價值就是答案。我想要一個結果,顯示所有可能的答案的所有問題,並計算出答案的發生頻率。MySQL查詢來計票

SELECT value AS 'Answer', count(*) AS 'Total Votes' 
FROM survey_data sd 
INNER JOIN (SELECT key FROM sd GROUP BY key) T1 ON T1.key = sd.key 
WHERE flag != 1 
GROUP BY value 
ORDER BY 'Total Votes' DESC 

我在這裏錯過了什麼?

作爲一個方面說明,當我運行這個查詢沒有INNER JOIN,結果不是命令DESC'總投票' - 有誰知道爲什麼或什麼問題可能是?

感謝, 瑞安

回答

7

關鍵是一個保留字。

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

把它內反引號(ALT + 96)或重命名你的領域

編輯。如果你使用多個單詞的別名,你也必須使用反引號。 所以by子句中

爲了通過total votes說明不帶引號

反引號前將總票後更改您的訂單。我沒有看到他們在我的帖子中,或者甚至用一個詞更好地改變你的領域別名。

+0

工作完美...和良好的建議! – NightHawk 2011-03-03 01:29:15

0

我是一個MSSQL的傢伙,所以不知道這是否會有所幫助,但嘗試使用完全合格的列,例如。 table.column

SELECT sd.value AS 'Answer', count(sd.*) AS 'Total Votes' 
FROM survey_data sd 
INNER JOIN (SELECT sd.key FROM sd GROUP BY sd.key) T1 ON T1.key = sd.key 
WHERE sd.flag != 1 
GROUP BY sd.value 
ORDER BY 'Total Votes' DESC