2010-10-15 82 views
0

嘿傢伙,我真的搞砸了這一點。我嘗試過,但失敗了。我有以下三張表,用戶polard在不同日期搜索了2次,在表b中第二次搜索時增加了朋友。我只需要建立查詢,它會給我兩個新加的朋友(不會出現在第二個搜索列表的末尾)。表C中會有polard 20名朋友顯示具有USID 1,然後22個朋友USID 2表示總的記錄將是42Sql朋友datatable查詢

table a    
uid name 
1  karos 
2  polard 

table b        
usid umid name friends 
1  2 polard 20 
2  2 polard 22 

table c 
usrid usid name friends 
1  1 hansy 10 
2  1 boje 23 
.  .  .  . 
.  .  .  . 

您的幫助將geatly理解。 預先感謝您。

回答

1

這是你在找什麼?

SELECT usrid 
FROM c 
WHERE usid = 2 
AND usrid NOT IN (SELECT usrid FROM c WHERE usid = 1) 

如果你想同時得到USID值是動態的,以及,假設你需要爲polard最新USID做,它可能是這樣的

SELECT usrid 
FROM c 
WHERE usid = 
     SELECT MAX (usid) FROM b WHERE name = 'polard') 
AND usid NOT IN 
     (SELECT usrid FROM c WHERE usid = 
      SELECT MAX (usid) - 1 FROM b WHERE name = 'polard')) 

這是假設usid值是表b中每個umid特有的整數遞增值。

如果他們沒有,那麼它會有點複雜,因爲你需要做一個訂單,並得到第二個到最後一個umid值