我需要从指定的列显示最大数据,这是否可能? 我仍然是这个SQL的新手。
我有这样的数据
router.post('/insert', function insertUsert(req, res, next){
new User({
name: req.body.name,
username: req.body.username,
password: req.body.password,
admin: false
}).save(function(err, user){
if(err){
return next(err);
}
res.status(201).send("User Inserted)");
})
});
Id Order_id Sequence
------------------------
1 A01 1
2 A01 2
3 A02 1
4 A02 2
5 A02 3
6 A03 1
是主键。
预期结果
Id
答案 0 :(得分:2)
您需要进行子查询:
SELECT t.id, t.order_id, t.sequence
FROM t
INNER JOIN
(SELECT order_id, MAX(sequence) as mx
FROM t
GROUP BY order_id) sub
ON t.order_id = sub.order_id
WHERE t.sequence = sub.mx
因此,基本上,名为sub的查询会查找每个订单ID的最大序列值。然后这些结果连接回主表,我称之为t,所以你可以打上id。
答案 1 :(得分:0)
使用 GROUP BY 和 ORDER BY
SELECT Id,Order_id,MAX(Sequence) AS Sequence FROM table_name GROUP BY Order_id ORDER BY Id
答案 2 :(得分:0)
如果你不需要结果中的id,你可以只做一个组...否则你需要一个内部查询作为@kbball提供的答案。
select order_id, max(sequence)
from tablename
Group by order_id;
答案 3 :(得分:0)
您可以使用correlated subquery
,如下所示。
SELECT *
FROM table1 t1
WHERE t1.Sequence =
( SELECT max(t2.Sequence)
FROM table1 t2
WHERE t1.Order_id = t2.Order_id );
<强>结果:强>
Id Order_id Sequence
------------------------
2 A01 2
5 A02 3
6 A03 1
<强> DEMO 强>