MYSQL - 更新SET值

时间:2012-11-27 18:05:31

标签: mysql database set

例如,假设您有一个CD数据库,您希望将所有CD类型的流行音乐'Pop'提高10%。但是类型类型是SET。它可以是多种类型的,例如RnB和Rock。

我的代码如下:

UPDATE CD
set price = price * 1.1
WHERE genre = 'Pop';

但是我的代码只更新了流派仅流行的行。如果类型是'Rock,Pop,RnB',则不会更新。我做错了什么?

3 个答案:

答案 0 :(得分:2)

您需要使用LIKEDocumentation):

... WHERE genre LIKE '%Pop%'

如果您的类型是“Rock,Pop,RnB。”,那么这将匹配。

您应该知道您使用的是非规范化结构。更好的设计是有一个类型参考表:

CD_Genre (CD,类型)

答案 1 :(得分:1)

使用类似关键字

UPDATE CD set price = price * 1.1 WHERE genre like '%Pop%';

答案 2 :(得分:0)

在查询中访问SET值的最佳方法是FIND_IN_SET:

UPDATE CD
set price = price * 1.1
where FIND_IN_SET('Pop', `genre`)

有关FIND_IN_SET的更多信息,请访问:http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_find-in-set