在数据库中查询 SQL

Query in SQL in a Database

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

数据库有 3 列(ID,Material,数量)

id material quantity
1 X 30
2 X 15
3 Y 20

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

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

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

过滤 table 为 name = 'X',按 ID 降序排列结果,并获得第一行 LIMIT:

SELECT quantity 
FROM tablename 
WHERE name = 'X' 
ORDER BY ID DESC LIMIT 1

您的子查询与您的主查询不相关,并且在整个 table 上返回最大 ID。改为

SELECT quantity 
FROM table t 
WHERE name = 'X' AND 
ID = (SELECT max(ID) FROM table t1 where t1.name = t.name)
;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”等的结果。