MySQL——为多个表增加相同的字段

今天早上遇到一个需求,为某个数据库中的多个表增加同一个字段(或者说列、栏位)。查了资料,经过测试可行,现记录如下。

例如有test开头的三个表:testa、testb、testc,要为这三个表增加一个Lindex的字段( 数据类型为INT(10) ,注意增加的字段避免使用关键字)。

采用的是拼接SQL语句的方式。

新建查询(拼接SQL语句):

select group_concat('alter table ', table_schema, '.', table_name, ' add column LINDEX INT(10);' SEPARATOR "") from information_schema.tables where table_schema='数据库名' and table_name like 'test%';

运行结果:

alter table 数据库名.testa add column LINDEX INT(10);alter table 数据库名.testb add column LINDEX INT(10);alter table 数据库名.testc add column LINDEX INT(10);

然后再新建查询,拷贝上面的拼接语句运行结果再运行,即可为三个test开头的表增加了Lindex的字段。

注意要点:

①group_concat默认以逗号“,"拼接,会不符合SQL语法,所以要在group_concat参数的末尾加上加上SEPARATOR "",不要逗号。

②group_concat有默认拼接长度限制为1024,结果过长会被裁剪掉,修改global variable中的group_concat_max_len或者my.ini文件中的group_concat_max_len值,可改变拼接长度限制。

③有个报错[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY。。。。 不知道什么原因,查了一下,貌似是版本问题。但增加字段操作是成功的,没有影响。

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值