我有一个包含三个表'contacts','names'和'contact_names'的数据库。SQLite多次插入选择结果
create table contacts(id integer, gid integer, sid integer);
create table names(id integer primary key, name text);
create table contact_names(fullname text);
insert into names(name) values ('Eberhard');
insert into names(name) values ('Esche');
insert into contacts values(1, (select id from names where name='Eberhard'), (select id from names where name='Esche'));
现在我想插入一对“给定名称+姓”两次,一次是为“给定名称+姓”,一次是“姓+给定的名称”。我现在已经是这样的statment产生这些名字:
SELECT gTable.name || ' ' || sTable.name AS name1, sTable.name || ' ' || gTable.name AS name2 FROM
(
SELECT name FROM names WHERE id=2
) AS gTable,
(
SELECT name FROM names WHERE id=1
) AS sTable;
我什么不能执行,现在要插入这些名称表“contact_names”使用这样的事情:
INSERT INTO contact_names VALUES (name1), (name2) WITH
SELECT gTable.name || ' ' || sTable.name AS name1, sTable.name || ' ' || gTable.name AS name2 FROM
(
SELECT name FROM names WHERE id=2
) AS gTable,
(
SELECT name FROM names WHERE id=1
) AS sTable;
由于结果表'contact_names'应包含两个条目(行)“Esche Eberhard”和“Eberhard Esche”。有没有人有线索如何实现这一目标?当然,我可以两次执行select语句,但我宁愿用一个选择来执行此操作。
BR,尤杜
PS:也许是有用的解释我为什么要这么做。 'contact_names'的INSERT语句应该通过在从'contacts'中删除条目时调用的触发器来执行。如果我删除例如一排
DELETE FROM contacts WHERE id=1;
那么接触的两个名字组合应被插入到“contact_names”(这些名称的进一步处理)。处理删除的名称后,表格将被定期清除。
这似乎是一个非常奇怪的要求。看起来名字和姓氏被存储在'names'表中的不同_records_中,但是你想要转换它,并且重复第一个/最后一个组合。 –