SQL COUNT FORM JOIN TABLES

时间:2016-02-28 16:04:38

标签: sql sql-server derby

我有以下sql命令:

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   list包含至少一个聚合,则所有条目必须有效   聚合表达式。

有什么问题?

1 个答案:

答案 0 :(得分: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的原文也应该有效)。