在sqlite中从一个表中查找数据写到另一个表中。 65C

就是如何用图中work表中的id字段在data表(data中有三万多行数据)中找到对应的id把对应的a中的内容写入到work中的a中,补充完整个work

图片说明

可以把结果直接存在数据库中,也可以保存到各类文件中,最后只需要d、id和对应的a即可

我自己试过Python,但由于技术太差没能成功,对方法和语言没有要求,谢谢大家

补充一下,结果一定要按原来的顺序排,不能按id顺序排

4个回答

insert into work select 1 as d, id, a from data where id in (select id from work)
qq_34256207
qq_34256207 我这样运行后发现他的结果是追加在原来的行后面的(也不是不行),但是结果中的"d"列全变成了"1"而且整体的顺序全都是按id排序的,我想让他是按原来的顺序排列,并且d最好原来一样,附图 https://ae01.alicdn.com/kf/U4c2ff7d749b04f18a723f4c7e498298bT.jpg
3 个月之前 回复
INSERT INTO `work` (id, a)
  SELECT id, a FROM `data`
ON DUPLICATE KEY UPDATE `work`.a = `data`.a;

备注:d 要有原始值, 此代码是源自MySQL代码,不知可有相容性。

qq_34256207
qq_34256207 我实测了一下,好像是不行
3 个月之前 回复

update table1
set num1 = t2.num2
FROM table1 t1 INNER JOIN table2 t2
ON t1.id=t2.pid;

问题已经解决,自己来填下坑,欢迎大家补充方法

xxx.py文件↓

import configparser
import sqlite3
import os
read_file = configparser.ConfigParser()
read_file.read("Sqlite.cfg")
file_dir = read_file.get("Sqlite", "filedir")
work_db = sqlite3.connect(file_dir)
cursor = work_db.cursor()
cursor.execute("select * from data;")
test = cursor.fetchall()
for i in test:
    dataogn = list(i)
    data_id = str(dataogn[0])
    data_a = str(dataogn[1])
    try:
        comman = "UPDATE work SET a= \"" + data_a + "\" WHERE id = " + data_id + ";"
        cursor.execute(comman)
        print("success")
    except:
        #exit()
        print(data_id+"failed")
cursor.close()
work_db.commit()
work_db.close()

Sqlite.cfg文件↓

[Sqlite]
filedir = 数据库地址

先pip安装configparser,修改并保存Sqlite.cfg和py文件在同一目录运行

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问