是否有任何方法可以将特定记录的mysql表的所有列更新为特定值。
例如我有一个大约70列的表,默认情况下,它们在创建表时设置为0,当我通过PHPmyadmin添加一个新记录时,只需填写一个或两个值并提交所有其他字段设置为0,但我想将所有字段设置为1 很多次,所以我需要通过PHPmyadmin
分别将所有列设置为1加快进程并加快速度 我试过了
UPDATE tablename SET * = '1' WHERE id = '2'
,但它不起作用。
如果有人能在类似的线路上提供解决方案,那就太棒了。
编辑:
有没有指定SQL语句中所有70列的方法?那就是我要找的东西。我知道如何更新SQL语句中正常指定列。谢谢。
答案 0 :(得分:3)
如果您正在寻找一种使用简短的简短语句将所有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'
答案 1 :(得分:2)
您必须在更新语句中命名每一列。