我有表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) ;
但它的节目
然后当我添加另一个条件,其中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) ;
我希望展示的结果是
答案 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;