首页 > 解决方案 > 在数据库中使用 SQL 查询

问题描述

我需要你的帮助来用 SQL 编写一个数据库查询。想象一下这种情况:

有 3 列(ID、材料、数量)的数据库

ID 材料 数量
1 X 30
2 X 15
3 20

我想从数据库中获取材料 X 的最后数量条目。我的想法是执行以下操作:

SELECT quantity 
FROM table 
WHERE name = 'X' 
AND ID = ( SELECT max( ID ) FROM table)

不幸的是,我无法获得值 15。它仅在我仅搜索最后一行时才有效(在本例中为材料 Y)。

标签: mysqlsqlgreatest-n-per-group

解决方案


;WITH cte AS
(
   SELECT *,
         ROW_NUMBER() OVER (PARTITION BY Material ORDER BY ID DESC) AS rn
   FROM table
)
SELECT material,quantity
FROM cte
WHERE rn = 1

通过这种方式,您可以看到“X”、“Y”等的结果。


推荐阅读