gpt4 book ai didi

php mysql 批量或批量更新多列和多行,但如果列不为空则不更新

转载 作者:行者123 更新时间:2023-11-29 20:53:48 24 4
gpt4 key购买 nike

我有这个案例风格更新。此示例仅更新 3 行,但在实际应用中,一次可能会更新数百或数千条记录。

UPDATE table_name 
SET
col_1 = CASE id
WHEN 555555 THEN '43333'
WHEN 555556 THEN '43334'
WHEN 555557 THEN '43335'
END,
col_2 = CASE id
WHEN 555555 THEN '893'
WHEN 555556 THEN '893'
WHEN 555557 THEN '893'
END,
col_3 = CASE id
WHEN 555555 THEN '2016-06-09 06:03:00'
WHEN 555556 THEN '2016-06-09 06:04:00'
WHEN 555557 THEN '2016-06-09 06:05:00'
END,
col_4 = CASE id
WHEN 555555 THEN '37064896499'
WHEN 555556 THEN '37064896500'
WHEN 555557 THEN '37064896501'
END,
col_5 = CASE id
WHEN 555555 THEN '93270106785000243103'
WHEN 555556 THEN '93270106785000243104'
WHEN 555557 THEN '93270106785000243105'
END,
col_6 = CASE id
WHEN 555555 THEN now()
WHEN 555556 THEN now()
WHEN 555557 THEN now()
END,
col_7 = CASE id
WHEN 555555 THEN '93'
WHEN 555556 THEN '94'
WHEN 555557 THEN '95'
END,
col_8 = CASE id
WHEN 555555 THEN '270'
WHEN 555556 THEN '271'
WHEN 555557 THEN '272'
END
WHERE id IN (555555,555556,555557)

我想知道是否可以对其进行操作,这样它就不会在每种情况下都将数据写入列并记录该列是否已经有数据(如果它是日期列,则不要更新日期) 0000-00-00 00:00:00 以外的其他内容。

我是否必须编辑每个 WHEN 行或在末尾编辑一次 WHERE id IN (555555)?

PHP 脚本构建所有案例,然后在最后批量更新一个查询中的所有记录。

无论如何,这个怎么样(这对于我想要完成的任务来说更好)......如果只有 1 列有数据,例如如果 col_1 有数据,则不要更新 8 列中的任何一列?

更新

这是我在提出建议之一后得到的,但仍然不起作用。仅在 col_1 上尝试,直到正确为止,然后我将执行 2 到 8。

UPDATE table_name
SET
col_1 = CASE col_1 WHEN col_1<>'' THEN
CASE id
".$col_1_loop."
END
ELSE col_9 = CASE col_9 WHEN col_9<>'' THEN
CASE id
".$col_1_loop."
END
END,
col_2 = CASE id
".$col_2_loop."
END,
col_3 = CASE id
".$col_3_loop."
END,
col_4 = CASE id
".$col_4_loop."
END,
col_5 = CASE id
".$col_5_loop."
END,
col_6 = CASE id
".$col_6_loop."
END,
col_7 = CASE id
".$col_7_loop."
END,
col_8 = CASE id
".$col_8_loop."
END
WHERE id IN (".$id_loop.")

如果col_1不为空,则将数据放入col_9中,如果 col_2 不为空,则 col_2 转到 col_10,如果 col_3 的日期和时间不为零,则 col_3 转到 col_11,如果 col_4 不为空,则 col_4 转到 col_12,如果 col_5 不为空,则 col_5 转到 col_13,如果 col_6 没有零日期和时间,则 col_6 转到 col_14,如果 col_7 不为空,则 col_7 转到 col_15,如果 col_8 不为空,col_8 将转到 col_16

最佳答案

在where子句中添加不更新的条件,例如:

UPDATE table_name 
SET
col_1 = CASE id
WHEN 555555 THEN '43333'
WHEN 555556 THEN '43334'
WHEN 555557 THEN '43335'
END,
col_2 = CASE id
WHEN 555555 THEN '893'
WHEN 555556 THEN '893'
WHEN 555557 THEN '893'
END,
......
.....
col_8 = CASE id
WHEN 555555 THEN '270'
WHEN 555556 THEN '271'
WHEN 555557 THEN '272'
END
WHERE id IN (555555,555556,555557)
AND (col_1 is not null or col_2 is not null ........ or col_8 is not null)

关于php mysql 批量或批量更新多列和多行,但如果列不为空则不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37798667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com