合并具有相同主键的 SQLite3 表
Merging SQLite3 tables with identical primary keys
我正在尝试将两个 table 与有关同一股票列表的财务信息合并:第一个是价格 table(包含每日、每周、每月等...价格数据),第二个是比率 table(包含估值和其他比率)。两个 table 都有相同的主键数字 ID 列(引用相同的股票代码)。创建连接游标后 cur
,我的代码是:
CREATE TABLE IF NOT EXISTS prices_n_ratios AS SELECT * FROM
(SELECT * FROM prices INNER JOIN ratios ON prices.id = ratios.id);
DROP TABLE prices;
DROP TABLE ratios;
除了新的 prices_n_ratios
table 包含一个名为 ID:1
的额外列外,这工作正常,其名称在进一步处理过程中会导致问题。
如何避免创建此列,可能是通过某种方式从 *
中排除第二个 table 的第一个主键 ID 列(列出所有列名不是一个选项),或者如果我不能,我怎样才能从生成的 table 中删除这个额外的列,因为我发现在 SQLite3 中很难删除它?
只需在 SELECT 子句中列出您实际需要的所有列,而不是使用 *
.
或者,加入 USING 子句,它会自动删除重复的列:
SELECT * FROM prices JOIN ratios USING (id)
我正在尝试将两个 table 与有关同一股票列表的财务信息合并:第一个是价格 table(包含每日、每周、每月等...价格数据),第二个是比率 table(包含估值和其他比率)。两个 table 都有相同的主键数字 ID 列(引用相同的股票代码)。创建连接游标后 cur
,我的代码是:
CREATE TABLE IF NOT EXISTS prices_n_ratios AS SELECT * FROM
(SELECT * FROM prices INNER JOIN ratios ON prices.id = ratios.id);
DROP TABLE prices;
DROP TABLE ratios;
除了新的 prices_n_ratios
table 包含一个名为 ID:1
的额外列外,这工作正常,其名称在进一步处理过程中会导致问题。
如何避免创建此列,可能是通过某种方式从 *
中排除第二个 table 的第一个主键 ID 列(列出所有列名不是一个选项),或者如果我不能,我怎样才能从生成的 table 中删除这个额外的列,因为我发现在 SQLite3 中很难删除它?
只需在 SELECT 子句中列出您实际需要的所有列,而不是使用 *
.
或者,加入 USING 子句,它会自动删除重复的列:
SELECT * FROM prices JOIN ratios USING (id)