在数据库中查询 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”等的结果。
我需要你的帮助在 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”等的结果。