【问题标题】:SQL Write ID from one table to anotherSQL 将 ID 从一张表写入另一张表
【发布时间】:2013-10-09 15:14:04
【问题描述】:
我是 SQL 的新手,并且正在使用 postgreSQL 数据库。我目前有两张表,一张称为模式,另一张称为模式分析。下面是每个表的内容。
模式
模式分析
- post_id
- post_index
- 模式
- pattern_id
我目前正在做的是对一堆不同的帖子进行字符串搜索,如果它与给定的模式匹配,则将其写入数据库。我已经将 post_id、post_index 和 pattern 写入 pattern_analysis 表,但是如何将 pattern_id 从 patterns 表获取到 pattern_analysis 表?
编辑:我正在使用 python 2.6 和 psycopg2 与数据库交互。我不确定这是否会改变任何东西,但我假设它不会。
【问题讨论】:
标签:
python
sql
postgresql
psycopg2
【解决方案1】:
快速更新语句应该可以解决问题:
更新 pa SET pa.pattern_id = p.pattern_id
FROM pattern_analysis PA JOIN 模式 P ON PA.pattern = P.pattern
完全公开,未经测试,这是我在 MS-SQL 中使用的语法,因此在 postgre 中可能会有所不同。
【解决方案2】:
我假设您的 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))