我正试图从库存中获取独特的产品......
股票表:
id - product - quantity
1 2 0
2 3 5
3 2 19
4 4 3
5 2 8
结果
id - product - quantity
5 2 8
4 4 3
2 3 5
正在使用
SELECT max(id) as id,
product
FROM stock
GROUP by product
ORDER by id DESC
但我无法获得最新数量的产品 我得到了这个查询:
id - product - quantity
1 2 0
2 3 5
4 4 3
我需要最新数量的产品。
答案 0 :(得分:1)
您可以将现有查询包装在子查询中,并将其连接到表本身,以便获取同一行的其他列。
SELECT a.*
FROM stock a
INNER JOIN
(
SELECT product, MAX(ID) id
FROM stock
GROUP BY product
) b ON a.product = b.product
AND a.ID = b.ID
ORDER BY a.id DESC
答案 1 :(得分:0)
假设您对“最新”的定义是max(id),我认为最简单的方法是:
SELECT s.id, s.product, s.quantity
FROM stock s
WHERE NOT EXISTS (SELECT 1 FROM stock s2 WHERE s2.product = s.product and s2.id > s.id);
基本上给我一个库存行,其中对于具有更大ID的相同产品没有行。
答案 2 :(得分:0)
你可以使用表格的左连接来实现它,它只过滤没有一个具有更高id和相同产品的行,避免使用子查询和分组,这在大型表上可能非常昂贵:
select p1.id, p1.product, p1.quantity from stock as p1
left join test as p2 on p1.product = p2.product and p2.id> p1.id
where p2.id is null
order by p1.id desc;