我有以下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包含至少一个聚合,则所有条目必须有效 聚合表达式。
有什么问题?
答案 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
的原文也应该有效)。