回答

收藏

PostgreSQL:插入另一个表

技术问答 技术问答 425 人阅读 | 0 人回复 | 2023-09-14

我试图将数据从另一个表插入到一个表中,这些表只有一个共同的列。问题是,TABLE1列不接受空值,所以我不能把它们留空,也不能从TABLE二中获取。0 u" D! T4 v. B0 j
我有TABLE1:id,col_1(不为null),col_2(不为null),col_3(不为null)
; k- ?- k5 \$ w  B% y: K和TABLE2:id,col_a,col_b,col_c8 m* g, }! f8 V# ~
那么如何将ID从TABLE2插入TABLE并用如 data1”,“ data2”,“ data3等硬编码字符串填充col_1-3?
! z; Y4 B/ J3 G. vINSERT INTO TABLE1 (id) SELECT id FROM TABLE2 WHERE col_a = "something";将导致:
, o+ t# d. f1 _/ A$ G. n错误:“ col_1列中的空值违反了非空约束4 L$ Y0 m" {7 L' I" S2 T5 E& h
                                                               
4 ?; ~# w. c6 U& B" U( Y5 S    解决方案:                                                               
2 I( x9 S8 T0 Z( D* ?: r7 u( Z                                                                只需在SELECT中提供文字值即可:# B- n8 w4 a& p0 z
INSERT INTO TABLE1 (id,col_1,col_2,col_3)SELECT id,'data1','data2','data3'FROM TABLE2WHERE col_a = 'something';列表可以包含任何值表达式:
7 o. E2 ?  ~; G- k9 W% A3 e但不需要引用列表中的表达式FROM表达式中的任何任何列。例如,它们可以是常量算术表达式。6 i. ~% b$ a1 u, v7 H9 h8 ^2 G
字符串文字必须是值表达式。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则