例如,假设您有一个CD数据库,您希望将所有CD类型的流行音乐'Pop'提高10%。但是类型类型是SET。它可以是多种类型的,例如RnB和Rock。
我的代码如下:
UPDATE CD
set price = price * 1.1
WHERE genre = 'Pop';
但是我的代码只更新了流派仅流行的行。如果类型是'Rock,Pop,RnB',则不会更新。我做错了什么?
答案 0 :(得分:2)
您需要使用LIKE
(Documentation):
... 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