作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我听说有人说表连接可以在任何地方使用来代替子查询。我在查询中对其进行了测试,但发现只有在使用子查询时才会检索到适当的数据集。我无法使用连接获得相同的数据集。我不确定我的发现是否正确,因为我是 RDBMS 的新手,因此经验不足。我将尝试绘制我正在试验的数据库的模式(用文字表示):
数据库有两个表:Users
( ID , 姓名, 城市) 和友谊 ( ID , Friend_ID )Goal
:Users表用于存储简单的用户数据,Friendship表代表用户之间的友谊。 Friendship 表有两个列作为外键,引用 Users.ID。表之间存在多对多关系。
问题:我必须检索所有用户的 Users.ID 和 Users.Name,这些用户不是特定用户 x 的 friend ,而是来自同一个城市(很像 fb 的好友推荐系统)。
通过使用子查询,我能够实现这一点。查询看起来像:
SELECT ID, NAME
FROM USERS AS U
WHERE U.ID NOT IN (SELECT FRIENDS_ID
FROM FRIENDSHIP,
USERS
WHERE USERS.ID = FRIENDSHIP.ID AND USERS.ID = x)
AND U.ID != x AND CITY LIKE '% A_CITY%';
Users
Friendship
最佳答案
对于 not in
您可以使用 left join
并检查 is null
:
select u.id, u.name
from Users u
left join Friends f on u.id = f.id and f.friend_id = @person
where u.city like '%city%' and f.friend_id is null and u.id <> @person;
lateral
实现。加入或
cross apply
取决于您使用的引擎。
关于sql - 真的可以到处用JOINS代替SQL中的子查询吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34914403/
我有一个图书馆,我计划以 dex 形式使用。我想直接针对这个库进行编译,但不导出它。相反,我想将它放在我的资源中并使用类加载器实际实例化它。 这是我的图书馆: public class Foo {
我是一名优秀的程序员,十分优秀!