更新 mysql SET 字段的最佳方法是从字段中删除特定值。
例如。具有以下值的字段类别:1、2、3、4、5? 我想从列表中删除“2”:
UPDATE table
SET categories = REPLACE(categories, ',2,', ',')
WHERE field LIKE '%,2,%';
但是如果“2”是列表中的第一个或最后一个值呢?
UPDATE table
SET categories = REPLACE(categories, '2,', '')
WHERE field LIKE '2,%';
UPDATE table
SET categories = REPLACE(categories, ',2', '')
WHERE field LIKE ',2%';
如何用一个查询处理所有 3 种情况?!
最佳答案
如果您需要从集合中删除的值不能多次出现,您可以使用这个:
UPDATE yourtable
SET
categories =
TRIM(BOTH ',' FROM REPLACE(CONCAT(',', categories, ','), ',2,', ','))
WHERE
FIND_IN_SET('2', categories)
看到它工作here .如果该值可以多次出现,这将删除它的所有出现:
UPDATE yourtable
SET
categories =
TRIM(BOTH ',' FROM
REPLACE(
REPLACE(CONCAT(',',REPLACE(col, ',', ',,'), ','),',2,', ''), ',,', ',')
)
WHERE
FIND_IN_SET('2', categories)
关于mysql - 从 SET 字段中删除值的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14642658/