将mysql表的所有列设置为特定值

时间:2011-03-09 11:58:03

标签: mysql sql

是否有任何方法可以将特定记录的mysql表的所有列更新为特定值。

例如我有一个大约70列的表,默认情况下,它们在创建表时设置为0,当我通过PHPmyadmin添加一个新记录时,只需填写一个或两个值并提交所有其他字段设置为0,但我想将所有字段设置为1 很多次,所以我需要通过PHPmyadmin

分别将所有列设置为1

加快进程并加快速度 我试过了

UPDATE tablename SET * = '1' WHERE id = '2',但它不起作用。

如果有人能在类似的线路上提供解决方案,那就太棒了。

编辑:


有没有指定SQL语句中所有70列的方法?那就是我要找的东西。我知道如何更新SQL语句中正常指定列。谢谢。

2 个答案:

答案 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)

您必须在更新语句中命名每一列。