sql好友的数据表查询

时间:2010-10-15 11:01:01

标签: mysql sql database

嘿伙计们,我真的搞砸了。我试过这个,但失败了。我有以下三个表,用户极化在不同的日子搜索了2次,在表b中的第二次搜索中增加了朋友。我只需要构建一个查询,它将给我两个新添加的朋友(不会出现在第二个搜索列表的末尾)。在表c中将有20个极地的朋友用usid 1显示然后22个朋友用usid 2表示总记录将是42个。

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
 .       .     .      .
 .       .     .      .   

我们非常感谢您的帮助。  先感谢您。

2 个答案:

答案 0 :(得分:1)

您可以使用NOT IN

使用子查询

按照http://www.dba-oracle.com/sql/t_subquery_not_in_exists.htm中的示例,您可以说,给我所有用户ID为2的朋友,而不是(用户ID为1的朋友)

答案 1 :(得分: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的整数递增值。

如果它们不存在,那么它将会更复杂,因为您需要执行Order by并获得第二个到最后一个umid值