2016-02-28 21 views
2

我有以下SQL命令:SQL COUNT FORM连接表

SELECT "USERNAME"."TOPICS".VALUE, 
     "USERNAME"."TOPICS".QID, 
     "USERNAME"."QUESTION".QRATING 
FROM "USERNAME"."TOPICS" JOIN "USERNAME"."QUESTION" 
ON "USERNAME"."TOPICS".QID = "USERNAME"."QUESTION".QID 
AND "USERNAME"."TOPICS".VALUE = 'kia' 
ORDER BY QRATING DESC 

它的作品真的很好,但我想看看有多少元素的回报。于是,我就用:

SELECT COUNT("USERNAME"."TOPICS".QID) 
FROM "USERNAME"."TOPICS" JOIN "USERNAME"."QUESTION" 
ON "USERNAME"."TOPICS".QID = "USERNAME"."QUESTION".QID 
AND "USERNAME"."TOPICS".VALUE = 'kia' 
ORDER BY QRATING DESC 

但我得到的错误:

列引用 'USERNAME.TOPICS.VALUE' 是无效的。当SELECT 列表包含至少一个聚合时,则所有条目必须有效 聚合表达式。

什么问题?

回答

2

嗯。 ORDER BY应该是错误的,而不是SELECT。然而,你的查询会更容易使用表的别名就明白了:

SELECT COUNT(t.QID) 
FROM "USERNAME"."TOPICS" t JOIN 
    "USERNAME"."QUESTION" q 
    ON t.QID = q.QID AND t.VALUE = 'kia'; 

如果第一次查询的工作,我看不出为什么这不会(和你原来没有ORDER BY也应该工作)。