每行sqlite查询

时间:2011-11-05 05:09:40

标签: sql sqlite

sqlite(和sql)相当新。对于表中的每一行,我想进行查询并附加到另一个表。我目前的计划是提取向量中的所有项目<>并为vector<>中的每个项目调用sqlite。这可以通过一个sqlite语句完成吗?在c / c ++中。 提前谢谢。

编辑:我的一个想法是在新表上触发。对于每个新添加的行,触发器将使用它来对该行进行查询。

示例:

create table Persons(Id, FirstName, LastName);
create table ParentChildren(PersonsIdParent, PersonsIdChild);

对于每个人,创建一个包含所有可能子项的列表(例如,相同的LastName),并添加到ParentChildren。

2 个答案:

答案 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中不需要冗余条目。除了问题还有更多......