2013-03-23 20 views
0

我在面對一個問題在MySQL查詢,我有2個表。不同的值,其中有最大編號

  1. category_info

    cid cname 
    1 Latest News 
    2 Notice Board 
    3 Headline 
    
  2. news_info

    pid cid title    date 
    1 1 mobile    2013-03-04 
    2 1 fish    2013-03-04 
    3 2 Airtel india  2013-03-04 
    4 2 Marco Simoncelli 2013-03-05 
    5 3 title1    2013-03-22 
    6 1 title    2013-03-22 
    7 3 International Opportunity 2013-03-22 
    

我想從具有最大pid

news_info獨特價值訪問稱號

我使用下面的查詢

SELECT a.*, b.* FROM category_info AS a RIGHT JOIN news_info AS b ON (a.cid = b.cid) GROUP BY a.cid 

它給我不同的值,但不是最大的ID。它給最小的id值。

+1

可否請你發佈你從上面的例子所期望的輸出。還有什麼理由爲什麼你正在做一個正確的加入? – Rush 2013-03-23 12:50:31

+0

親愛拉什,我期望輸出是 PID標題日期 6標題2013年3月22日 4馬科西蒙切利2013年3月5日 7國際機會2013年3月22日由於 – narendra 2013-03-24 06:07:42

回答

1

這會給你所問問題的答案。我不確定這是不是你真正想要的。

select distinct title 
from news_info 
where pid = 
(select max(pid) from news_info) 
0

這裏是另一種方法:

select ni.* 
from news_info ni 
order by pid desc 
limit 1 

在你的榜樣,沒有重複的PID,所以只存在一個具有最大值。

0

這裏是另一種方法:

SELECT * 
FROM news_info n 
LEFT JOIN category_info c ON a.cid = b.cid 
-- 
-- the maximum pid := there should not exist a higher pid value (for the same cid) 
-- 
WHERE NOT EXISTS (
    SELECT * FROM news_info x 
    WHERE x.cid = n.cid 
    AND x.pid > n.pid 
    ); 
相關問題