寻找年轻情人的简单SQL语句

寻找年轻情人的简单SQL语句,sql,Sql,我有两张桌子 People id|name|age Loves id1|id2 //id1 loves id2 我需要一个SQL查询,让我知道所有的人谁是由较低年龄的id的爱的id 到目前为止,我写过这样的东西: select name from People where ID in (select ID1 from (select * from People, Likes where People.ID = Loves.ID2)) < (select age from Peopl

我有两张桌子

People
id|name|age

Loves
id1|id2  //id1 loves id2
我需要一个SQL查询,让我知道所有的人谁是由较低年龄的id的爱的id

到目前为止,我写过这样的东西:

select name from People where ID in (select ID1 from (select * from People, Likes where People.ID = Loves.ID2)) < 
(select age from People, Loves where People.ID = Loves.ID2);

这是错误的。

这里有另一种方式没有@MartinSmith的干净:

select id2
from
(select id1
       ,p.age as lover_age
       ,id2
       ,p2.age as loved_age
from loves
left join people p on p.id = loves.id1
left join people p2 on p2.id = loves.id2) t
where t.lover_age < t.loved_age

这是一个您可以使用的示例,这里有另一种方式没有@MartinSmith的干净:

select id2
from
(select id1
       ,p.age as lover_age
       ,id2
       ,p2.age as loved_age
from loves
left join people p on p.id = loves.id1
left join people p2 on p2.id = loves.id2) t
where t.lover_age < t.loved_age

如果爱情关系是互惠的,那么你可以使用马丁·史密斯的答案

如果关系是有方向性的,P1可能爱P2而不被爱,那么这就变成了

SELECT loved.id, COUNT(*) AS lovers
    FROM People AS lover
    JOIN Loves  AS loves  ON (lover.id = loves.id1)
    JOIN People AS loved  ON (loves.id2 = loved.id)
 WHERE lover.age < loved.age
 GROUP BY loved.id;
然后我们添加它们所属的关系:

... JOIN loves ON (lover.id = loves.id1)
因为我们需要爱人的年龄,所以我们需要再次与人交往:

... JOIN People AS loved ON (loves.id2 = loved.id)
这上面都是不寂寞的人。我们需要限制那些情人比自己年轻的人

WHERE lover.age < loved.age

如果爱情关系是互惠的——那么你可以用马丁·史密斯的答案

如果关系是有方向性的,P1可能爱P2而不被爱,那么这就变成了

SELECT loved.id, COUNT(*) AS lovers
    FROM People AS lover
    JOIN Loves  AS loves  ON (lover.id = loves.id1)
    JOIN People AS loved  ON (loves.id2 = loved.id)
 WHERE lover.age < loved.age
 GROUP BY loved.id;
然后我们添加它们所属的关系:

... JOIN loves ON (lover.id = loves.id1)
因为我们需要爱人的年龄,所以我们需要再次与人交往:

... JOIN People AS loved ON (loves.id2 = loved.id)
这上面都是不寂寞的人。我们需要限制那些情人比自己年轻的人

WHERE lover.age < loved.age

这是一种方向性的关系,我喜欢你提到的阿莫尔·查努洛·阿马托·阿马尔·珀多纳。啊,我完全错过了评论//id1 lovesid2@MartinSmith,我也是。我对你的答案投了更高的票,因为我自己已经开始写了,我写了与您完全相同的查询:-D。然后我去寻找是否可以添加任何原始内容。@LSerni您能稍微解释一下您的SQL语句吗?不确定这是否是您要查找的内容-原始查询对我来说似乎是不言自明的。也许你需要为这个问题添加一些信息…?这是一种方向性的关系,我喜欢你提到的阿莫·查努洛·阿马托·阿马尔·珀多纳。啊,我完全错过了评论//id1 lovesid2@MartinSmith,我也是。我对你的答案投了更高的票,因为我自己已经开始写了,我写了与您完全相同的查询:-D。然后我去寻找是否可以添加任何原始内容。@LSerni您能稍微解释一下您的SQL语句吗?不确定这是否是您要查找的内容-原始查询对我来说似乎是不言自明的。也许你需要在问题中添加一些信息。。。?