【问题标题】:find 1 way liked friends out of two tables(relation) named as mutual friends and likes.SQL, DATABASE从命名为共同朋友和喜欢的两个表(关系)中找到一种喜欢的朋友。SQL,数据库
【发布时间】:2015-03-26 12:16:39
【问题描述】:

两个表被命名为喜欢和其他的朋友。 两者都包含两列。第一列包含用户的 ID 号,第二列是他们共同的朋友。 我只想知道查询是 从包含共同朋友的朋友的喜欢表中删除该行,并且只完成了一种喜欢的方式..这意味着共同朋友中的一个不喜欢另一个。此信息在喜欢表中给出。 两列。 1 包含喜欢第二列中的另一个的用户的 id。

好友表

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

68        55

喜欢

id 1     id 2                                  
11          22   (should be DELETED)                                     
22          11   (should be DELETED)                                 
33          77   (should be DELETED)                                 
55          68    (save it)                                                                   
77          33   (should be DELETED)

【问题讨论】:

  • 您已标记此问题mysqloracle。您使用的是哪个 RDBMS?虽然两者都是甲骨文公司拥有的产品,但它们实际上是非常不同的(前者是免费的和开源的;而后者是商业的和专有的封闭源代码)。这很重要,因为它们的 SQL 变体具有不同的语法。
  • 55是68的朋友,55点赞68,根据解释的逻辑和例子,为什么第二张桌子上是“(save it)”?

标签: mysql sql database oracle social-networking


【解决方案1】:

您可以删除连接的结果:

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

【讨论】:

    【解决方案2】:

    你可以删除id,其中id在selectfriends inner join id1 to id2 and Id2 to ID1

    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
       )
    

    【讨论】:

    • 我不太了解。你能解释一下这个概念而不是代码只是概念吗???
    • @AtirChaudary 我知道你想在喜欢表中删除朋友在它的朋友中也允许找到它链接到 Friends_1.id2 到 Friends_2.id1 和 Friends_1.id1 到 Friends_2 .id2。如果 id1 在 Select 语句中,则删除 where 子句
    【解决方案3】:

    我对这种情况的处理方法如下: 我将 id1 和 id2 连接为字符串,然后将其与第二个表中的连接进行比较并删除匹配的条目。

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

    例如,如果有一个喜欢的“11-22”和一个朋友“11-22”,那么应该删除那个“喜欢”条目,是吗?这就是这种方法的工作原理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多