php - 在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
语句。如果有人能弄清楚,那就太好了,在此先感谢您!
解决方案
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 中的至少一列也包含零日期。