2016-05-30 116 views
0

我已經表master_pangkat顯示最大行結果SQL

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其中夾= 2001最大的id

我試過這個代碼

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

然後當我添加其他地方的條件,其中夾= 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

回答

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; 
+0

只有p表顯示最大結果並加入m仍然是第一行 –

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); 

作爲便箋,您應該在表上使用有意義的別名來提高可讀性和可維護性。

+0

感謝它的工作 –