Mysql 从两个名为mutual friends和likes.SQL的表(关系)中查找1个喜欢的朋友

Mysql 从两个名为mutual friends和likes.SQL的表(关系)中查找1个喜欢的朋友,mysql,sql,database,oracle,social-networking,Mysql,Sql,Database,Oracle,Social Networking,两个表分别命名为likes和friends。 两者都包含两列。第1列包含第2列中用户与其共同好友的ID号。 我只想知道问题是什么 从包含共同好友的好友的“喜欢”表中删除该行,这些好友只进行了一次喜欢。这意味着一个共同好友不喜欢另一个。此信息在表中给出。 两列。1包含喜欢第2列中显示的另一个用户的id id 1 id 2 11 22-

两个表分别命名为likes和friends。 两者都包含两列。第1列包含第2列中用户与其共同好友的ID号。 我只想知道问题是什么 从包含共同好友的好友的“喜欢”表中删除该行,这些好友只进行了一次喜欢。这意味着一个共同好友不喜欢另一个。此信息在表中给出。 两列。1包含喜欢第2列中显示的另一个用户的id

id 1     id 2                                  
11        22-                                      
22        11-                                 
33        77*                                 
55        68                                                                    
77        33*

68        55
朋友桌

id 1     id 2                                  
11        22-                                      
22        11-                                 
33        77*                                 
55        68                                                                    
77        33*

68        55
喜欢

id 1     id 2                                  
11        22-                                      
22        11-                                 
33        77*                                 
55        68                                                                    
77        33*

68        55

您可以删除联接的结果:

id 1     id 2                                  
11        22-                                      
22        11-                                 
33        77*                                 
55        68                                                                    
77        33*

68        55
DELETE l1 FROM likes l1 JOIN likes l2 ON l1.id1 = l2.id2 AND l1.id2 = l1.id1

您可以删除id,其中id位于选择好友内部连接id1到id2和id2到id1

id 1     id 2                                  
11        22-                                      
22        11-                                 
33        77*                                 
55        68                                                                    
77        33*

68        55
delete from likes where F1.id1 in (
  select f1.*,f2.* 
     from freinds f1 
    inner join freinds f2 on 
    F1.id1 = F2.id2  and F1.id2=F2.id1
   )

我对本案的处理方法如下: 我将id1和id2合并为字符串,然后将其与第二个表中的合并进行比较,并删除匹配项

id 1     id 2                                  
11        22-                                      
22        11-                                 
33        77*                                 
55        68                                                                    
77        33*

68        55
DELETE FROM likes
WHERE CONCAT(id1, '-',id2) IN (SELECT concat(id1,'-',id2) AS Relationship FROM friends);

例如,如果有一个like'11-22'和一个friends'11-22',那么应该删除该'like'条目,是吗?这就是这种方法的工作原理。

您已将此问题标记为和。您正在使用哪些RDBMS?虽然两者都是Oracle公司拥有的产品,但事实上它们非常不同,前者是免费的、开源的;后者是商业和专有的封闭源代码。这很重要,因为它们的SQL变体具有不同的语法。55是68的朋友,55喜欢68,根据解释的逻辑和示例,为什么要将其保存在第二个表中?我不太理解它。你能解释一下概念而不是代码只是概念吗???@AtirChaudary我理解你想在喜欢表中删除的朋友在它的朋友中也可以内部连接允许找到它链接到朋友\u 1.id2到朋友\u 2.id1和朋友\u 1.id1到朋友\u 2.id2。如果Select语句中有id1,则选中delete where子句
id 1     id 2                                  
11        22-                                      
22        11-                                 
33        77*                                 
55        68                                                                    
77        33*

68        55