我正在尝试运行这样的SQL命令
UPDATE Category
SET SortOrder = (
CASE
WHEN Category.Name = 'name1' THEN 1
WHEN Category.Name = 'name2' THEN 2
WHEN Category.Name = 'name3' THEN 3
END
)
WHERE Deleted = 0 AND Name IN ('[name1,name2,name3]')
但是它返回(受影响的0行)。但是,当我检查它们的值时,应该不会。
答案 0 :(得分:3)
WHERE Deleted = 0 AND Name IN ('[name1,name2,name3]')
这恰好匹配一个字符串。 。 。 '[name1,name2,name3]'
。
如果要匹配其他值,则需要:
WHERE Deleted = 0 AND Name IN ('name1', 'name2', 'name3')
答案 1 :(得分:2)
删除[]并在in
内使用单独的字符串
UPDATE Category
SET SortOrder =
CASE
WHEN Category.Name = 'name1' THEN 1
WHEN Category.Name = 'name2' THEN 2
WHEN Category.Name = 'name3' THEN 3
END
WHERE Deleted = 0 AND Name IN ('name1','name2','name3')
名称的值将是单独的字符串
答案 2 :(得分:2)
您可以在下面尝试-
UPDATE Category
SET SortOrder = (
CASE
WHEN Category.Name = 'name1' THEN 1
WHEN Category.Name = 'name2' THEN 2
WHEN Category.Name = 'name3' THEN 3
END
)
WHERE Deleted = 0 AND Category.Name IN ('name1','name2','name3')