我有一個包含三個表'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_中,但是你想要轉換它,並且重複第一個/最後一個組合。 –