我试图从另一个表向一个表插入数据,而这些表只有一个公共列.问题是,TABLE1中的列不接受空值,所以我不能将它们留空,也不能从TABLE2中获取它们.

我有表1:

表2:

那么,我如何将id从表2插入表1,并用硬编码字符串(如"data1"、"data2"、"data3")填充列1-3呢?

INSERT INTO TABLE1 (id) SELECT id FROM TABLE2 WHERE col_a = "something";

将导致:

错误:"col_1"列中的空值违反了非空约束

推荐答案

您可以在 Select 中提供文字值:

INSERT INTO TABLE1 (id, col_1, col_2, col_3)
SELECT id, 'data1', 'data2', 'data3'
FROM TABLE2
WHERE col_a = 'something';

Select 列表可以包含any value expression个:

但是select列表中的表达式不必引用FROM子句的表表达式中的任何列;例如,它们可以是常量算术表达式.

字符串文字当然是一个值表达式.

Sql相关问答推荐

仅在新值与旧值不同时才插入PostgreSQL

删除MariaDB数据库中的JSON数据

如何在snowflake中进行SQL的反向填充

从列中提取子字符串的ORDER BY CASE语句

IF NOT EXISTS子查询的性能瓶颈

按属性值 Select 数组元素Postgres Jsonb

如何为缺少的类别添加行

SQL将三个表中的三列组合为一列

计算不同模式的时间跨度

仅当 SQL Server 中的表为开时,才在存储过程中使用更改跟踪

如何根据创建日期查找两个表中最接近的记录?

SQL 搜索 - 获取最大值日期的奇怪行为

我可以在 T-SQL (SQL Server) 的函数内使用 OPTION 子句吗?

SQL:无重复项的两个聚合函数

SQL 按 id 运行总计并受条件限制(在窗口上)

MIN MAX 值与条件绑定

SQL Server 分区和 Run Case 语句

从每行中排除最大元素

在 MySql 数据库中的两个日期之间搜索

SQL Server Where 条件