我是Sql的新手,这可能解释了为什么我无法弄清楚这一点。在外部select语句中未使用子查询中使用附加表的自加入
我有2个理论社交网络表。一个名字叫'highschooler',一个叫'喜欢'。 'Highschooler'有像id(PK),姓名和成绩的信息,而'likes'有id1和id2,它们简单地表明来自高级学生的哪个id'相互'喜欢',id1'喜欢'id2。喜欢不一定是相互的。
查询:对于每个喜欢比自己年轻2个或更多年级的人的学生,请返回该学生的姓名和年级,以及他们喜欢的学生的姓名和年级。
此:
select h1.name, h1.grade, h2.name, h2.grade
from highschooler h1 inner join highschooler h2
where h1.id in (select id1 from likes where h1.id=id1 and id1<>id2 and h1.grade>h2.grade+2);
没有返回正确的结果。事实上,正确的结果甚至不在我从这个查询中得到的结果中。我仍然试图围绕“加入”,这是我觉得在这里很有用,但我不知道如何在自加入中工作。
尽管我很想知道答案,但我还是希望知道如何在未来做这样的事情,因为我无法真正找到任何有关此类查询的信息,例如:自我加入的例子只是展示了一个单独的自我加入,并没有更复杂的。
任何帮助,将不胜感激。
诗篇这在SQLite的中运行
内部加入highschooler h2在h2.id = id2 发布后不久,我发现了它,但我的确非常相似!非常感谢。 –