如果在B列中找到Y,则在A列中执行X.

时间:2014-11-19 10:34:44

标签: mysql

我已经对这个问题做了一些研究,发现这很有效,而且非常简单:

UPDATE `table` SET `A`=A+200 WHERE B='Y';

如果B列只有一个Y值,这显然可行。

但是这里出现了“艰难”的问题。部分。 B列有多个值,如:Y1,Y2,Y3,Y4,

我希望只有在B列中找到Y3时才执行A + 200,而不管其他值是什么。我不太熟悉数组或通过列B搜索Y3值所需的任何内容。任何帮助表示赞赏。谢谢!

4 个答案:

答案 0 :(得分:2)

您可以使用FIND_IN_SET或使用REGEXP

匹配正则表达式

示例:

UPDATE `table`
SET `A` = `A` + 200
WHERE FIND_IN_SET('Y3', `B`)

UPDATE `table`
SET `A` = `A` + 200
WHERE `B` REGEXP '(^|,)Y3(,|$)'

aaand glglgl说的是什么。规范化您的数据库:Wikipedia: Database normalization

答案 1 :(得分:0)

 UPDATE table` SET A=A+200 where find_in_set('Y3',YOUR_COLUMN);

答案 2 :(得分:0)

UPDATE `table` SET `A`=A+200 WHERE B='Y3';

答案 3 :(得分:0)

UPDATE `table` SET `A` = A + 200 WHERE `B` LIKE 'Y%'; 

试试这个。这意味着更新B以Y开头的表,并且无论下一步是什么;)