如何删除表的一半记录?

时间:2014-11-18 14:54:14

标签: mysql database sql-delete

我有这个表,它保存社交网站的用户关系,结构如下。

+--------+----------------+
| user_id| friend_user_id |
+--------+----------------+

表中的每个关系都有2条记录。如下所示:

+--------+----------------+
| user_id| friend_user_id |
+--------+----------------+
|    1   |        2       |
|    2   |        1       |
|    4   |        7       |
|    8   |        15      |
|    7   |        4       |
|   15   |        8       |
+--------+----------------+

现在我需要做的是每一个关系只有一个记录。意思是我需要删除每个关系的每一条记录。

我尝试了各种查询无济于事。如果有人能提出合适的查询,我将非常感激。

1 个答案:

答案 0 :(得分:3)

看起来这些关系成对存在。因此,用户A将用户B作为朋友,而用户B将用户A作为朋友。如果我正确地阅读了你的问题,你想要删除其中一个关系但是留下另一个关系。

由于它们具有不同的user_id,您可以删除user_id大于friend_user_id的所有行。这将删除其中一个关系但保留另一个关系。

delete table where user_id > friend_user_id