基于的友谊表中的SQL插入值
我正在上一门数据库课程,我被其中一个问题困住了。“对于A是B的朋友,B是C的朋友的所有情况,为A和C对添加一个新的友谊”。 这就是我所能做到的基于的友谊表中的SQL插入值,sql,Sql,我正在上一门数据库课程,我被其中一个问题困住了。“对于A是B的朋友,B是C的朋友的所有情况,为A和C对添加一个新的友谊”。 这就是我所能做到的 INSERT INTO friend SELECT DISTINCT f1.ID1, f2.ID1 FROM friend f1 JOIN friend f2 using (ID2), friend WHERE f1.ID1 <> f2.ID1 AND friend.ID1 &
INSERT INTO
friend
SELECT DISTINCT
f1.ID1, f2.ID1
FROM
friend f1
JOIN friend f2 using (ID2),
friend
WHERE
f1.ID1 <> f2.ID1
AND friend.ID1 <> f1.ID1
AND friend.ID2 <> f1.ID2
模式在这里
我想知道是否有人能给我一些关于如何进行的提示。
谢谢。首先,我不认为既有朋友又有喜欢的桌子有什么意义
如果友谊是由两个相互喜欢的高中生表示的,那么一张有两个ID列的表格就足够了。首先,我不认为同时拥有FRIEND和LIKES表格有什么意义
如果友谊是由两个相互喜欢的高中生表示的,那么一张有两个ID列的表就足够了。我想你已经有了基本的概念 我会这样做:
INSERT INTO friend
(ID1, ID2)
SELECT DISTINCT f1.ID1, f2.ID2
FROM friend f1
INNER JOIN f2
ON f1.ID2 = f2.ID1
AND f1.ID1 <> f2.ID1
AND f1.ID2 <> f2.ID2
WHERE f1.ID1 <> f2.ID2
我想你已经有了基本的概念 我会这样做:
INSERT INTO friend
(ID1, ID2)
SELECT DISTINCT f1.ID1, f2.ID2
FROM friend f1
INNER JOIN f2
ON f1.ID2 = f2.ID1
AND f1.ID1 <> f2.ID1
AND f1.ID2 <> f2.ID2
WHERE f1.ID1 <> f2.ID2
我认为可能是:
INSERT INTO friend
(ID1, ID2)
SELECT DISTINCT h.ID, f2.ID2
FROM Highschooler h
inner join friend f1 on(h.ID=f1.ID1)
inner join friend f2 on(f1.ID2=f2.ID1)
where h.ID <> f2.ID2
and not exists(select *
from friend f3
where f3.ID1=h.ID
and f3.ID2 = f2.ID2)
我认为可能是:
INSERT INTO friend
(ID1, ID2)
SELECT DISTINCT h.ID, f2.ID2
FROM Highschooler h
inner join friend f1 on(h.ID=f1.ID1)
inner join friend f2 on(f1.ID2=f2.ID1)
where h.ID <> f2.ID2
and not exists(select *
from friend f3
where f3.ID1=h.ID
and f3.ID2 = f2.ID2)
只是提示-您应该指定要在朋友表中插入的列。只是提示-您应该指定要在朋友表中插入的列。这不是答案;而Friend表有两个ID列。显然Friend表包含相互的友谊,而LIKES表不是对等的,我的意思是A可以喜欢某人,但某人不一定喜欢A。这是否意味着如果A是B的朋友,B是C的朋友,A喜欢C但C不喜欢A,那么A不能和C做朋友吗?这不是答案;而Friend表有两个ID列。显然Friend表包含相互的友谊,而LIKES表不是对等的,我的意思是A可以喜欢某人,但某人不一定喜欢A。这是否意味着如果A是B的朋友,B是C的朋友,A喜欢C但C不喜欢A,那么A不能与C成为朋友?这个问题要求建立新的友谊,所以你应该检查记录是否已经存在。谢谢Marlin,这很有效。但正如CL所指出的,我可以看出我需要消除重复的内容。当然,答案必须只包含新的友谊。帮助?谢谢你们的意见。我用except SELECT*FROM friend过滤掉了重复的记录,现在没事了。是的,我想在我去午餐的路上排除现有记录。我突然想到,朋友表的第三个连接就是为了这个。很高兴你解决了这个问题。这个问题要求建立新的友谊,所以你应该检查一下记录是否已经存在。谢谢马林,这很有效。但正如CL所指出的,我可以看出我需要消除重复的内容。当然,答案必须只包含新的友谊。帮助?谢谢你们的意见。我用except SELECT*FROM friend过滤掉了重复的记录,现在没事了。是的,我想在我去午餐的路上排除现有记录。我突然想到,朋友表的第三个连接就是为了这个。很高兴你解决了。