2010-10-15 85 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值