开发者社区 问答 正文

SQLite3 中找出同时存在于两张表中的记录,并写入新的表中,:报错

数据库 words 中有两张表: gradedwords 和 classedwords;
表 gradedwords 中有两列:word 和 grade;
表 classedwords 中有两列: word 和 class;
然后我新建了一个表 gradedandclassedwords,表中有三列:
word, grade 和 class;

现在我要查找出同时存在于表 gradedwords 和表 classedwords 中的 word,写入表 gradedandclassedwords 中,并匹配相应的 grade 和 class。

这个查询和插入的SQL语句要怎样写呢?

我参考下面的资料:
https://stackoverflow.com/questions/1430562/sql-selecting-rows-that-are-in-both-tables

写了如下语句:

insert into gradedandclassedwords (word)
select word from gradedwords intersect select word from classedwords;

但是这样只能插入 word,相应的 grade 和 class 要怎样写才能在一个语句里插入呢?

 

展开
收起
kun坤 2020-06-14 08:54:19 630 分享 版权
阿里云 AI 助理回答

你可以使用 INSERT INTO...SELECT 语句结合 INNER JOIN 来实现这个需求。这样可以在一个语句中同时查询出两个表中相同的 word,以及各自对应的 gradeclass,然后将这些数据插入到 gradedandclassedwords 表中。以下是具体的 SQL 语句示例:

INSERT INTO gradedandclassedwords (word, grade, class)
SELECT gw.word, gw.grade, cw.class
FROM gradedwords gw
INNER JOIN classedwords cw ON gw.word = cw.word;

这段 SQL 代码的工作原理是: 1. 通过 INNER JOINgradedwords(别名为 gw)和 classedwords(别名为 cw)表之间进行连接,连接条件是两表中的 word 字段相等。 2. SELECT 子句选取需要的字段:gw.word, gw.grade, 和 cw.class。 3. 最后,使用 INSERT INTO 将这些字段的值插入到 gradedandclassedwords 表中。

这样就可以在一个语句里完成查询匹配及插入操作了。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址: