SQL 计数表格连接表
SQL COUNT FORM JOIN TABLES
我有以下 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
效果很好,但我想计算有多少个元素returns。所以我尝试使用:
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
但是我得到了错误:
Column reference 'USERNAME.TOPICS.VALUE' is invalid. When the SELECT
list contains at least one aggregate then all entries must be valid
aggregate expressions.
问题是什么?
嗯。 ORDER BY
应该得到错误,而不是 SELECT
。但是,使用 table 别名会更容易理解您的查询:
SELECT COUNT(t.QID)
FROM "USERNAME"."TOPICS" t JOIN
"USERNAME"."QUESTION" q
ON t.QID = q.QID AND t.VALUE = 'kia';
如果第一个查询有效,我看不出有什么不可行的原因(没有 ORDER BY
的原始查询也应该有效)。
我有以下 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
效果很好,但我想计算有多少个元素returns。所以我尝试使用:
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
但是我得到了错误:
Column reference 'USERNAME.TOPICS.VALUE' is invalid. When the SELECT list contains at least one aggregate then all entries must be valid aggregate expressions.
问题是什么?
嗯。 ORDER BY
应该得到错误,而不是 SELECT
。但是,使用 table 别名会更容易理解您的查询:
SELECT COUNT(t.QID)
FROM "USERNAME"."TOPICS" t JOIN
"USERNAME"."QUESTION" q
ON t.QID = q.QID AND t.VALUE = 'kia';
如果第一个查询有效,我看不出有什么不可行的原因(没有 ORDER BY
的原始查询也应该有效)。