从 select 创建表,然后通过在 mysql 中添加自动增量列来更改表

发布于 2024-10-12 02:35:16 字数 484 浏览 2 评论 0原文

正如主题中简要解释的那样,我需要通过选择现有值来创建一个表。 我想要实现的目标是拥有另一列具有自动递增值的列。

这是我已经尝试过的:

CREATE TEMPORARY TABLE temp_tb (    
    `row_id` bigint(20) NOT NULL AUTO_INCREMENT,
    `stm_id` bigint(20) NOT NULL,
    descr varchar(20) NOT NULL,
    PRIMARY KEY (row_id)
);

然后在选择之后:

INSERT INTO temp_tb (
  select stm_id,descr from tb_export
)

我希望在插入时预先填充 row_id 列,但我刚刚收到 sql 语法错误,告诉我列计数与值计数不匹配。

你知道这是否有可能实现吗?

谢谢

as briefly explained in subject, I need to create a table by selecting existing value.
The thing I would like to achieve is to have another column with auto incremented value.

This is what I already tried:

CREATE TEMPORARY TABLE temp_tb (    
    `row_id` bigint(20) NOT NULL AUTO_INCREMENT,
    `stm_id` bigint(20) NOT NULL,
    descr varchar(20) NOT NULL,
    PRIMARY KEY (row_id)
);

Then after with a select:

INSERT INTO temp_tb (
  select stm_id,descr from tb_export
)

I was expecting to have the row_id column prefilled at insert time, but I just got sql syntax error telling me that column count doesn't match value count.

Do you know if this is possible to achieve ?

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烧了回忆取暖 2024-10-19 02:35:16

您应该提供要插入到 temp_tb 中的列的名称:

INSERT INTO temp_tb (stm_id, descr) (
  select stm_id,descr from tb_export
)

you should provide the names of the columns you are inserting into your temp_tb:

INSERT INTO temp_tb (stm_id, descr) (
  select stm_id,descr from tb_export
)
记忆で 2024-10-19 02:35:16

如果我没记错的话,语法错误与您的插入语法有关。您有一个 temp_tb,它有 3 个字段,全部不为空。您将使用 insert 语句将 2 个字段插入到该表中。 MySQL 参考列出了使用 select 进行插入的语法:

插入 tbl_temp2 (fld_id)
选择 tbl_temp1.fld_order_id
从 tbl_temp1 到 tbl_temp1.fld_order_id > 100;

If I am not mistaken, the syntax error has to do with your insert syntax. You have a temp_tb that has 3 fields, all not null. You are inserting 2 fields into that table with your insert statement. The MySQL ref lists the syntax for insert using select as:

INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文