我试图解决问题5的SQL社交网络查询练习(核心集)分配斯坦福在线课程数据库简介。< / p>
数据库上有三个表:
create table Highschooler(ID int, name text, grade int);
create table Friend(ID1 int, ID2 int);
create table Likes(ID1 int, ID2 int);
问题5 :对于学生A喜欢学生B的每种情况,但我们没有关于B喜欢的人的信息(也就是说,B在Likes表中不显示为ID1),返回A和B的姓名和成绩。
此查询通过以下方式解决:
select distinct H1.name, H1.grade, H2.name, H2.grade
from Highschooler H1, Likes, Highschooler H2
where H1.ID = Likes.ID1 and Likes.ID2 = H2.ID and H2.ID not in (select ID1 from Likes);
我的问题是: 在WHERE子句中,将变量放在等号的左侧或右侧之间是否存在差异? 例如, H1.ID = Likes.ID1和Likes.ID2 = H2.ID 或 Likes.ID1 = H1.ID和H2.ID = Likes.ID2是一样的吗? ?有什么影响吗?
我之所以这样问是因为我是SQL的新手而且我曾经使用等号分配变量,我不知道这是不是这样的
答案 0 :(得分:0)
不,它没有任何区别。 WHERE
子句只是一个逻辑约束,由具有逻辑运算的较小部分组合而成。
逻辑上和数学上A = B和B = A意味着相同的事情,即他们根据值解析为true
或false
(或NULL
)。 WHERE
子句本身解析为true
或false
(或NULL
)。
如果查询优化器来自这个千禧年,那么顺序也无关紧要。