有没有办法一次性将特定记录的 mysql 表的所有列更新为特定值。
例如我有一个大约有 70 列的表,它们在创建表时默认设置为 0,当我通过 PHPmyadmin 添加新记录时,只需填写一两个值并提交它,所有其他字段都是设置为 0 ,但我想将所有字段设置为 1
很多次,所以我需要通过 PHPmyadmin 将所有列单独设置为 1
为了加快进程并
我试过
UPDATE tablename SET * = '1' WHERE id = '2'
,但它不起作用。
如果有人可以提供类似的解决方案,那就太好了。
EDIT:
有没有一种方法可以在 SQL 语句中不指定所有 70 列?这就是我正在寻找的。我确实知道如何正常更新 SQL 语句中指定的列。谢谢。
如果您正在寻找一种方法,通过简短的语句将所有 70 列更新为单个值,那么我建议您编写一个存储过程来执行更新。这样,您只需编写完整的更新语法一次,并且可以通过调用存储过程来反复重用它。
CREATE PROCEDURE update_all_columns (p_new_value SMALLINT, p_id INT) ...
CALL update_all_columns(1,2);
另一个技巧是使用 information_schema.columns 表生成更新语句,从而减少存储过程编码的繁琐性。
像这样的事情:
SELECT concat('UPDATE ',
table_name,
' SET ',
group_concat(column_name separator ' = p_new_value, '),
' = p_new_value',
' WHERE id = p_id;') as sql_stmt
FROM information_schema.columns
WHERE table_schema = 'your_schema'
AND table_name = 'tablename'
AND column_name != 'id'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)