【问题标题】:MariaDB SQL insert with selectMariaDB SQL 插入与选择
【发布时间】:2025-11-23 00:35:01
【问题描述】:

我会从 table_b 获取任何 id 并将这个结果添加到 table_a 中的 INSERT

如果我试试这个,效果很好

INSERT INTO table_a(id)
SELECT table_b.id
FROM table_b

但我还必须插入一些其他数据,但我可以做到。这些是一些失败的测试!

测试 1

INSERT INTO table_a(a,id)
SELECT 2000 as a,table_b.id
FROM table_b

1054 - “字段列表”中的未知列“a”

测试 2

INSERT INTO table_a(a,id)
SELECT 2000,table_b.id
FROM table_b

1054 - “字段列表”中的未知列“a”

测试 3

INSERT INTO table_a (table_a.col1,table_a.id) VALUES (a,id)
SELECT 2000,table_b.id
FROM table_b

1064 - 您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在 'a,id) 附近使用的正确语法

【问题讨论】:

  • table_a 是否真的包含a 列?
  • 表 a 有 4 列 a,b,c,d 其中 d=id in table_b.id
  • 失去别名。
  • 1054 - Unknown column 'a' in 'field list' 似乎表明 table_a 没有名为 a 的列。
  • 好吧,不明白你的建议!对于“SELECT”中的每一列,它对应于“INSERT”的“索引”,我必须在其中指出表 A 中的 A 列的“正确”列table_a 有真名 col_A INSERT INTO table_a(col_a,tb_b_id) SELECT 2000,table_b.id FROM table_b

标签: mysql insert sql-insert


【解决方案1】:

你需要相同的列数(和对应的数据类型)

INSERT INTO table_a(a,id)
SELECT 2000 , id 
FROM table_b

【讨论】:

    【解决方案2】:

    表 A 有 col_a, tb_b_id

    正确的 SQL 是:

    INSERT INTO table_a(col_a,tb_b_id)
    SELECT 2000 , id 
    FROM table_b
    

    【讨论】: