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
. . . .
. . . .
我们非常感谢您的帮助。 先感谢您。
答案 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值