寻找年轻情人的简单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语句吗?不确定这是否是您要查找的内容-原始查询对我来说似乎是不言自明的。也许你需要在问题中添加一些信息。。。?