sql - SQLite:如何查看不是我朋友但与我朋友成为朋友的人
问题描述
我在 DB Browser 中有一个数据库,其中有两个表;
CREATE TABLE "User" (
"ID" integer NOT NULL,
"name" TEXT NOT NULL,
PRIMARY KEY("ID" AUTOINCREMENT)
);
CREATE TABLE "Friends" (
"UserID" INTEGER NOT NULL,
"FriendID" INTEGER NOT NULL,
FOREIGN KEY("UserID") REFERENCES "Anvandare"("ID") ON DELETE CASCADE
);
所以我的问题是,我如何进行查询以显示我不是朋友的人,但我的朋友是他们的朋友。这样我基本上可以找到新朋友了。
解决方案
您可以多次加入:
select distinct u.id, u.name
from friends f1 -- my friends
inner join friends f2 on f2.userid = f1.friendid -- the friends of my friends
inner join users u on u.id = f2.friendid
where
f1.userid = ?
and f2.friendid <> f1.userid
and not exists ( -- that are not my friends
select 1 from friends f3 where f3.userid = ? and f3.friendid = f2.frienid
)
推荐阅读
- python - 如何让 BeautifulSoup 获得以下 div 类的价值
- java - maven jaxws-maven-plugin 在没有特定适配器的情况下将 XMLGregorianCalendar 更改为 Calendar
- spring - 在 Spring 中使用 MSAL 中的两个授权客户端时,我收到错误 AADSTS65001
- typo3 - 无需 FTP 或 SSH 将网站移动到另一台服务器
- javascript - 如何隔离 Gunjs 数据库?
- c# - 不同的对象访问不同的成员
- reactjs - 如何使用redux在2个屏幕之间传递数据并仅反应本机
- reactjs - 将自定义道具传递给打字稿中的样式组件
- node.js - yarn webpack 错误:Node Sass 版本 6.0.1 与 ^4.0.0 不兼容
- javascript - 如何在将照片上传到 Firebase 存储时将日期或时间等用户图像详细信息添加到文件名?