sqlite(和sql)相当新。对于表中的每一行,我想进行查询并附加到另一个表。我目前的计划是提取向量中的所有项目<>并为vector<>中的每个项目调用sqlite。这可以通过一个sqlite语句完成吗?在c / c ++中。 提前谢谢。
编辑:我的一个想法是在新表上触发。对于每个新添加的行,触发器将使用它来对该行进行查询。
示例:
create table Persons(Id, FirstName, LastName);
create table ParentChildren(PersonsIdParent, PersonsIdChild);
对于每个人,创建一个包含所有可能子项的列表(例如,相同的LastName),并添加到ParentChildren。
答案 0 :(得分:3)
是的,您可以在不离开数据库的情况下执行此类操作:
insert into table1 (column11, column12, ...)
select column21, column22, ...
from table2
where ...
只要所选列具有正确的类型,提供给INSERT的查询就可以根据需要复杂化。
现在我们知道你的桌子是什么样的,你只需要将人员加入自己:
insert into ParentChildren (PersonsIdParent, PersonsIdChild)
select p.Id, c.Id
from Persons p
join Persons c on p.LastName = c.LastName
where p.Id <> c.Id
只要您使用唯一的别名,就可以将表连接到自身。需要p.Id <> c.Id
条件才能避免让别人成为自己的孩子。
答案 1 :(得分:1)
您所要求的只是将每个人与同一Lastname
的其他人联系起来(我排除加入一个人):
INSERT INTO PersonsChildren
SELECT p.Id, c.id
FROM Persons p
JOIN Persons c USING (LastName)
WHERE p.Id <> c.Id
ORDER BY 1,2
使用SELECT
查询可以随时检索信息。在PersonsChildren中不需要冗余条目。除了问题还有更多......