首页 > 解决方案 > 在mysql中更新多个查询

问题描述

我有一个问题,如何在一个查询中更新 mysql 中的多个,这里的流程就像这些。

这将正常工作并运行

UPDATE table SET date_1 = Null WHERE '0000-00-00' = DATE_FORMAT(table_column1,'%Y-%m-%d')
UPDATE table SET date_2 = Null WHERE '0000-00-00' = DATE_FORMAT(table_column2,'%Y-%m-%d')
UPDATE table SET date_3 = Null WHERE '0000-00-00' = DATE_FORMAT(table_column3,'%Y-%m-%d')

我试过的

UPDATE table SET date1= NULL, date2= NULL, date3= NULL WHERE '0000-00-00' = 
DATE_FORMAT(table_column1,'%Y-%m-%d') OR '0000-00-00' = DATE_FORMAT(table_column2,'%Y-%m-%d') OR
'0000-00-00' = DATE_FORMAT(table_column3,'%Y-%m-%d')

但问题是,即使每列的值不等于,它也会将我的所有记录更新为空,0000-00-00因为我一直在使用OR语句。如果有人能弄清楚,那就太好了,在此先感谢您!

标签: phpmysql

解决方案


UPDATE table SET date_1 = CASE WHEN '0000-00-00' = DATE_FORMAT(table_column1,'%Y-%m-%d')
                               THEN NULL
                               ELSE date_1 END, 
                 date_2 = CASE WHEN '0000-00-00' = DATE_FORMAT(table_column2,'%Y-%m-%d')
                               THEN NULL
                               ELSE date_2 END, 
                 date_3 = CASE WHEN '0000-00-00' = DATE_FORMAT(table_column3,'%Y-%m-%d')
                               THEN NULL
                               ELSE date_3 END;

PS。WHERE 条件按原样复制。

聚苯乙烯。我建议添加 WHERE 子句,以确保 table_columnX 中的至少一列也包含零日期。


推荐阅读