Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将mysql表的所有列设置为特定值_Mysql_Sql - Fatal编程技术网

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

将mysql表的所有列设置为特定值,mysql,sql,Mysql,Sql,他说,没有任何方法可以一次更新mysql表中特定记录的所有列到特定值 例如,我有一个大约有70列的表,在创建表时默认设置为0,当我通过PHPmyadmin添加一个新记录时,只需填写一个或两个值并提交它,所有其他字段都设置为0,但我想将所有字段设置为1 很多次,所以我需要通过PHPmyadmin将所有列分别设置为1 加快这一进程,并 我试过了 更新tablename集*='1',其中id='2',但它不起作用 如果有人能提供类似的解决方案,那就太好了 编辑: 有没有办法不指定SQL语句中的所有70

他说,没有任何方法可以一次更新mysql表中特定记录的所有列到特定值

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

加快这一进程,并 我试过了

更新tablename集*='1',其中id='2',但它不起作用

如果有人能提供类似的解决方案,那就太好了

编辑:


有没有办法不指定SQL语句中的所有70列?这就是我要找的。我知道如何更新SQL语句中的列。谢谢。

您必须在update语句中为每一列命名。

如果您想用一个简短的语句将所有70列更新为一个值,那么我建议您编写一个存储过程来执行更新。这样,您只需要编写一次完整的更新语法,并且可以通过调用存储过程反复使用它

CREATE PROCEDURE update_all_columns (p_new_value SMALLINT, p_id INT) ...

CALL update_all_columns(1,2);
另一个技巧是使用information_schema.columns表生成update语句,从而减少编写存储过程的繁琐

CREATE PROCEDURE update_all_columns (p_new_value SMALLINT, p_id INT) ...

CALL update_all_columns(1,2);
大概是这样的:

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'

您好,谢谢,是的,我知道我可以通过指定所需的列来更新表。您必须指定所需的列。这里没有“更新我的表设置默认值”之类的内容,其中ID=12如果它允许您指定所有列,那么您也会将ID列更新为1!将列的默认值更改为1不是更好吗?您的意思是所有70列都是相同的数据类型?这听起来很不典型。为了方便起见,可以考虑ID列为第七十一列。是,除id列外,所有列都具有相同的数据类型。所有列的数据类型均为SMALLINT,除id列外的所有列的值仅为1或0。它是一个权限,ACL表。那么对于每种权限类型,您都添加一个新列吗?如果要更改格式以将每个权限存储在其自己的行中,则此大规模更新将更容易。事实上,我只会存储已授予的权限,因此没有行意味着未授予权限。John you是对的,但是否有更新所有列的选项,我不介意id是否更改,我可以稍后手动更改。更新单个列的工作量要少得多。