如何在SQL查询中关联主键和外键?

时间:2015-02-25 12:44:17

标签: sql database where

我试图解决问题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的新手而且我曾经使用等号分配变量,我不知道这是不是这样的

1 个答案:

答案 0 :(得分:0)

不,它没有任何区别。 WHERE子句只是一个逻辑约束,由具有逻辑运算的较小部分组合而成。 逻辑上和数学上A = B和B = A意味着相同的事情,即他们根据值解析为truefalse(或NULL)。 WHERE子句本身解析为truefalse(或NULL)。

如果查询优化器来自这个千禧年,那么顺序也无关紧要。