SQL从指定列中选择最大值

时间:2017-10-28 04:27:33

标签: mysql sql

我需要从指定的列显示最大数据,这是否可能? 我仍然是这个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

4 个答案:

答案 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