我在 MySQL 条目“id_user”中有一个逗号分隔的数字列表,如下所示:
127,130,150,12,4,7,8,9
在这个以逗号分隔的列表中查找数字的最佳方法是什么 (1) 如果它与其他数字一起使用逗号将其删除,或者 (2) 如果数字本身像这样,则直接删除它自己:
127
然后更新MySQL条目。
因此,如果我想从列表中删除 150,它将在 MySQL 中更新为:
127,130,12,4,7,8,9
我想避免尝试删除 ID“12”,但最终会删除 127 或 512 等数字中的“12”
谢谢!
最佳答案
字里行间,在我看来,您正在将外键列表存储在逗号分隔的字符串字段中以表示多对多关系。这不是一个好主意。
您应该做的是创建一个表来存储关系。
例如,假设您有一个名为users
的表并且您想要存储他们之间的 friend 关系。你正在做的是这样的(注意,我意识到这实际上不是一个很好的例子,因为我写了结尾,但我现在坚持使用它):
id | name | friends
------+--------+-----------
1 | Dave | 2,4
2 | Bob | 1
3 | Tom | 4
4 | Bill | 1,3
然而最好的做法是这样的:
用户
id | name
------+--------
1 | Dave
2 | Bob
3 | Tom
4 | Bill
friend
id | user | friend
------+--------+----------
1 | 1 | 2
2 | 1 | 4
3 | 2 | 1
4 | 3 | 4
5 | 4 | 1
6 | 4 | 3
要选择 Dave 的 friend ,您可以这样做
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
)
关于php - 如何从列表 MySQL 中删除特定数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10985189/