我创建了一个包含85列的表,但我错过了一列。错过的列应该是第57列。我不想删除该表并再次创建它。我正在寻找编辑该表并在第57个索引中添加一列。
我尝试了以下查询,但它在表的末尾添加了一列。
ALTER table table_name
Add column column_name57 integer
如何将列插入特定位置?
答案 0 :(得分:47)
ALTER TABLE
会在表的末尾添加新列。使用AFTER
指令将其放在表格中的某个位置:
ALTER table table_name
Add column column_name57 integer AFTER column_name56
来自mysql doc
要在表格行的特定位置添加列,请使用
FIRST
或AFTER
col_name
。默认是最后添加列。您还可以在FIRST
或AFTER
操作中使用CHANGE
和MODIFY
来重新排序表格中的列。
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
我为PostgreSQL搜索了这个,但it seems to be impossible。
答案 1 :(得分:2)
答案 2 :(得分:1)
ALTER TABLE table_name ADD COLUMN column_name57 INTEGER AFTER column_name56
答案 3 :(得分:0)
ALTER TABLE table_name ADD COLUMN column_name integer
答案 4 :(得分:0)
如果您说ADD COLUMN column_name则会抛出错误
你必须尝试 ALTER TABLE temp_name ADD My_Coumn INT(1) NOT NULL DEFAULT 1
请记住,如果表已经有很少的记录,你必须创建新列,然后你必须让它可以为空或者你必须像我在查询中那样定义默认值
答案 5 :(得分:0)
SET
@column_name =(
SELECT COLUMN_NAME
FROM
information_schema.columns
WHERE
table_schema = 'database_name' AND TABLE_NAME = 'table_name' AND ordinal_position = 56
);
SET
@query = CONCAT(
'ALTER TABLE `table_name` ADD `new_column_name` int(5) AFTER ',
@column_name
);
PREPARE
stmt
FROM
@query;
EXECUTE
stmt;
DEALLOCATE
stmt;
答案 6 :(得分:-1)
我试着像这样改变表格:
table_name add column column_name after column column_name;
第一个column_name
是新列名,第二个column_name
是您计划在之后插入的现有列。
答案 7 :(得分:-1)
作为解决方法,可以考虑使用列重命名。 即在末尾添加新列,然后直到新列位于正确位置,为位置在新列之后的每个列添加一个临时列,将值从旧列复制到临时列,删除旧列列,最后重命名临时列。
另请参阅:https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1770086700346491686