从字里行间看,在我看来,您将外键列表存储在逗号分隔的字符串字段中以表示多对多关系。这不是一个好主意。
您应该做的是创建一个表来存储关系。
例如,假设您有一个名为的表users
,并且您想存储它们之间的朋友关系。你正在做的事情是这样的(注意我意识到这实际上不是一个很好的例子,因为我写了结尾,但我现在坚持使用它):
id | name | friends
------+--------+-----------
1 | Dave | 2,4
2 | Bob | 1
3 | Tom | 4
4 | Bill | 1,3
而这样做更好的是这样的:
users
id | name
------+--------
1 | Dave
2 | Bob
3 | Tom
4 | Bill
friends
id | user | friend
------+--------+----------
1 | 1 | 2
2 | 1 | 4
3 | 2 | 1
4 | 3 | 4
5 | 4 | 1
6 | 4 | 3
要选择 Dave 的朋友,您可以这样做
SELECT u.*
FROM friends f
JOIN users u ON u.id = f.friend
WHERE f.user = 1
...并删除 Dave 和 Bob 之间的关系(你想在这里做什么),你可以简单地做
DELETE FROM friends
WHERE (
user = 1 AND friend = 2
) OR (
user = 2 AND friend = 1
)