SQL写入ID从一个表到另一个表

时间:2013-10-09 15:14:04

标签: python sql postgresql psycopg2

我是SQL新手,我正在使用postgreSQL数据库。我目前有两个表叫做模式,另一个叫做pattern_analysis。以下是每个表格的内容。

模式

  • pattern_id
  • 图案

pattern_analysis

  • POST_ID
  • post_index
  • 图案
  • pattern_id

我目前正在做的是对一堆不同的帖子进行字符串搜索,如果它匹配给定的模式,则将其写入数据库。我将post_id,post_index和pattern写入pattern_analysis表,但如何将pattern_id从patterns表中获取到pattern_analysis表中?

编辑:我使用python 2.6和psycopg2与数据库连接。我不确定这是否会改变,但我认为它没有。

2 个答案:

答案 0 :(得分:1)

快速更新声明应该可以解决问题:

UPDATE pa SET pa.pattern_id = p.pattern_id FROM pattern_analysis PA JOIN模式P ON PA.pattern = P.pattern

完全公开,未经过测试,这是我在MS-SQL中使用的语法,因此在postgre中可能会略有不同。

答案 1 :(得分:1)

我假设你的SQL插入代码看起来像这样:

INSERT INTO pattern_analysis (post_id,post_index,pattern) VALUES (x,xx,xxx)

其中'x','xx','xxx'是您写入数据库的值。您可以使用子查询在执行此INSERT时从模式表中获取pattern_id,如下所示:

INSERT INTO pattern_analysis (post_id,post_index,pattern,pattern_id) 
VALUES (x,xx,xxx,(SELECT pattern_id FROM patterns p WHERE p.pattern = xxx))