我有一个包含以下列的表:user_id,key,value和flag。 SELECT,FROM,WHERE,GROUP BY和ORDER BY按预期自行工作。当我尝试将密钥添加到表中时,我收到一个错误,表示要检查我的语法。关键是问题,价值就是答案。我想要一个结果,显示所有可能答案的所有问题以及答案发生频率的计数。
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 - 是否有人知道问题的原因或原因?
谢谢, 莱恩
答案 0 :(得分:7)
键是保留字。
http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
将其放入反引号(alt + 96)或重命名字段
修改。如果您使用包含多个单词的别名,则必须使用反引号。 因此,在
中更改您的订单条款按total votes
desc排序,不带引号
在总票数之前和之后提出反击。我没有在帖子中看到它们,甚至用一个单词更好地改变你的字段别名。
答案 1 :(得分: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