-1

我是 SQL 的新手,正在使用 postgreSQL 数据库。我目前有两张表,一张称为模式,另一张称为模式分析。下面是每个表的内容。

模式

  • pattern_id
  • 图案

模式分析

  • post_id
  • post_index
  • 图案
  • pattern_id

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

编辑:我正在使用 python 2.6 和 psycopg2 与数据库交互。我不确定这是否会改变任何东西,但我假设它不会。

4

2 回答 2

1

快速更新语句应该可以解决问题:

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

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

于 2013-10-09T15:22:14.123 回答
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))
于 2013-10-09T15:24:17.217 回答