【问题标题】:MySQL: INSERT from SELECT statement, column countMySQL:从 SELECT 语句插入,列数
【发布时间】:2022-11-20 05:28:52
【问题描述】:

表 1 有一列,表 2 有三列。名字都是独一无二的。

INSERT INTO table2 (SELECT * FROM table1 WHERE name = 'Brian') 

#1136 - 列数与第 1 行的值数不匹配

将 NULL 或空字符串附加到 SELECT 查询的结果的最简单方法是什么?

我已经尝试过这个和许多其他变体:

INSERT INTO table2 (SELECT * FROM test WHERE name = 'Brian', '','') 
INSERT INTO test2 ((SELECT * FROM test WHERE name = 'Brian') + '' , '')

【问题讨论】:

  • 停止使用SELECT *并列出列,在需要NULL的地方使用NULL(而不是''),如SELECT Col1, Col2, NULL, Col4 FROM ...。或者,在您的 INSERT INTO 中列出列,如 INSERT INTO table2 (Col1, Col2, Col4, Col5) (SELECT Col1, Col2, Col4, Col5 FROM ...)

标签: mysql


【解决方案1】:

最简单的方法是在源表和目标表中指定列名:

INSERT INTO table2 (col2) -- change col2 to the name of the column in table2 that will receive the values
SELECT col1 -- change col1 to the name of the column in table1
FROM table1 
WHERE name = 'Brian';

table2 中除 col2 之外的所有其他列都将设置为 null 或其默认值(如果在表的定义中定义)。

即使 col1table1 中的唯一列,您也应该更喜欢 SELECT col1 而不是 SELECT *,因为如果您向表中添加任何列,SELECT * 将停止工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2013-12-25
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    相关资源
    最近更新 更多