根据另一个字段更改mysql中的一个字段
我如何将宏/脚本/自动的东西组合在一起,使我能够批量对数据库进行以下更改: 如果第1列中的任何单元格为X,则将第2列(同一行)的内容更改为0。根据另一个字段更改mysql中的一个字段,mysql,automation,Mysql,Automation,我如何将宏/脚本/自动的东西组合在一起,使我能够批量对数据库进行以下更改: 如果第1列中的任何单元格为X,则将第2列(同一行)的内容更改为0。 如果第1列中的单元格不是X,则将第2列的内容单独保留。这只是一个简单的UPDATE语句,带有WHERE子句。运行一次以更新表中的所有行 UPDATE yourtable SET column2 = 0 WHERE column1 = 'X' 如果每当column1更改为X时,需要将column2自动更新为0,请在更新之前创建一个触发器 /* DELIM
如果第1列中的单元格不是X,则将第2列的内容单独保留。这只是一个简单的
UPDATE
语句,带有WHERE
子句。运行一次以更新表中的所有行
UPDATE yourtable SET column2 = 0 WHERE column1 = 'X'
如果每当column1
更改为X
时,需要将column2
自动更新为0,请在更新之前创建一个触发器
/* DELIMITER has been set to $$ in your client */
CREATE TRIGGER column1_is_X BEFORE UPDATE ON yourtable
FOR EACH ROW
BEGIN
IF NEW.column1 = 'X' THEN
SET NEW.column2 = 0;
END IF;
END$$
/* Then you should set the DELIMITER back to ; */
您可以执行以下操作:
UPDATE table SET column2 = IF (column1 = 'X', 0, column2)
如果这个“规则”应该总是发生的话,那么你可以考虑一个触发器(在你首先设置了你想要的值之后)-触发器会在你保存CulnN1=X感谢你的行时,将Cyrn2设置为0。当你说“自动”时,我是否可以在phpMyAdmin中设置为持续运行,这样我就不必每次需要更改时都运行此语句?@user1863562每次更新一行时,触发器都会自动持续运行。要在PHPMyAdmin中创建触发器,可能需要暂时将分隔符设置为类似$$
的其他值,以便创建触发器。我不使用PMA,所以我不知道确切的程序。在上面,我将语句编辑为以$$
结尾,假设您将分隔符设置为该值。运行触发器脚本后,出现以下错误:“#1064-您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取在第6行“end IF;end”附近使用的正确语法”谢谢。关于方差的最后一个问题——不是column1=X,而是如何更改它,使之成为column1在字符中的某个地方包含X?在这种情况下,它实际上是一个*,而不是一个X。或者在触发器上下文中LOCATE(NEW.column1,'*')>0