SQL:如何使用另一个表中的信息来选择一些信息
问题描述:
我有两个SQL表。SQL:如何使用另一个表中的信息来选择一些信息
在第一个表中,每一行具有(在其他领域不相关的问题)一个score
和category_id
字段
第二个表(categories
)是列出所有可能的类别的表,该表的第一个表中的元素可以属于。
我想要做下面的SQL请求:
SELECT category_name, (???) AS category_score
FROM categories
ORDER BY category_score DESC
其中???
= the sum of the scores of all the elements in table 1 that belong to the category
。
答
你可以join
和group by
:
SELECT category_name, SUM(score) AS category_score
FROM categories c
JOIN element e ON c.category_id = e.category_id
GROUP BY category_name
ORDER BY 2 DESC
感谢您的回答,我不知道'组by',我会考虑它。只是一个简单的问题,但我没有看到'ORDER BY 2 DESC'部分?为什么不是'GROUP BY category_score DESC'例如? –
@Malimalo'group by'子句将结果分解为组,因此集合函数(如'sum')可以独立应用于'category_name'的每个唯一值。一旦完成,结果仍然需要排序,这是通过'order by'子句完成的。 – Mureinik
谢谢你的回答,它实际上是'order by'中的'2',我没有得到。但是,我在提问之前做了我应该做的事情,搜索了它并得到了我的答案(这意味着“选择线的第二个元素的顺序”)非常快。感谢您的帮助 ;) –