我正在开发一个基于SQLite的项目来保存标记的项目。 我创建了这些表:item,tag和item_tag,如下所示:
CREATE TABLE 'item'(id INTEGER AUTOINCREMENT primary key, ...);
CREATE TABLE 'tag'(name TEXT primary key); // <- actually, don't care about performance here
CREATE TABLE 'item_tag'(item_id..., tag_id..., PRIMARY KEY(item_id, tag_id));
&#39;标签&#39;表已预先填写,现在我不想创建批处理文件以插入大量项目。
我使用这个SQL查询:
INSERT INTO item VALUES(NULL, ...);
INSERT INTO item_tag SELECT last_insert_rowid() AS item_id, tag.name AS tag_id FROM tag WHERE tag.name IN('tag1','tag3');
来自第二个INSERT的SELECT
查询可以单独使用。但是在INSERT
内,除了第一个插入的item_tag
,last_insert_rowid
指的是最后一个item_tag
rowid,而不是item
。
如果是这种查询的有人照顾的行为,是否有不同的方式来做我想要的事情?
感谢您的帮助。