显示最大行结果sql与2'其中'条件

时间:2016-05-30 02:29:04

标签: php mysql sql select

我有表master_pangkat

id_pangkat  name
-----------------
a1          |Chef
a2          |Cleaning Service
a3          |Cashier

我有桌子peg_pangkat

id nip id_pangkat year
----------------------
1  2001   a2        2012  
2  2001   a3        2015 
3  2012   a1        2016
4  2012   a1        2016

我想在表peg_pangkat中显示最大ID,其中nip = 2001

我已尝试过此代码

select * from peg_pangkat join master_pangkat on
    peg_pangkat.id_pangkat=master_pangkat.id
    where peg_pangkat.id=(select max(peg_pangkat.id) from peg_pangkat) ;

但它的节目

  • 4 2012 a1 2016

然后当我添加另一个条件,其中nip = 2001 它没有显示结果

     select * from peg_pangkat join master_pangkat on
            peg_pangkat.id_pangkat=master_pangkat.id
            where nip=2001
 and peg_pangkat.id=(select max(peg_pangkat.id) from   peg_pangkat) ;

我希望展示的结果是

  • 2 2001 a3 2015

2 个答案:

答案 0 :(得分:2)

您需要在子查询中添加WHERE子句。

SELECT  *
FROM peg_pangkat pp
INNER JOIN master_pangkat mp
    ON pp.id_pangkat = mp.id
WHERE
    pp.nip = 2001
    AND pp.id = (SELECT MAX(id) FROM peg_pangkat WHERE nip = pp.nip);

作为旁注,您应该在表上使用有意义的别名来提高可读性和可维护性。

答案 1 :(得分:0)

这是另一种方法:

select *
from peg_pangkat p join
     master_pangkat m
     on p.id_pangkat = m.id
where p.nip = 2001
order by p.id desc
limit 1;